我手边没有例子,但是在某些情况下调用event.preventDefault()会让原始事件通过(导航到页面,提交表单等),但是返回错误的帮助。
event.preventDefault()
xoshrz7s1#
你没有现成的例子吗?好吧,让我来创造一个例子,它可能是也可能不是你所想到的。请记住,return false;相当于同时调用event.preventDefault();和event.stopPropagation()。编辑:这适用于jQuery,它明确地实现了这种行为,并且还规范化了event.preventDefault()和event.stopPropagation()以在所有浏览器中使用。并不是所有使用“plain”JS的浏览器都是这样工作的,事实上,旧的IE版本根本不支持event.preventDefault(),它们有自己的等价物event.returnValue = false;如果您有嵌套的元素,并且在多个级别中处理相同的事件,那么调用event.preventDefault()不会停止外部元素的事件处理程序的运行,但是return false会,因为它会停止事件的传播。下面是一个示例:http://jsfiddle.net/nnnnnn/KjLv3/
return false;
event.preventDefault();
event.stopPropagation()
event.returnValue = false;
return false
<a href="#"><span>Click me to see an alert</span></a> // using jQuery for simplicity in the example: $("a span").click(function(e){ e.preventDefault(); }); $("a").click(function() { alert("Hello"); });
警告将显示。如果您更改“a span”处理程序以返回false,则警告将不显示。
iecba09b2#
所以,
function() { return false; }
//等于
function(e) { e.preventDefault(); e.stopPropagation(); }
2条答案
按热度按时间xoshrz7s1#
你没有现成的例子吗?好吧,让我来创造一个例子,它可能是也可能不是你所想到的。
请记住,
return false;
相当于同时调用event.preventDefault();
和event.stopPropagation()
。编辑:这适用于jQuery,它明确地实现了这种行为,并且还规范化了event.preventDefault()
和event.stopPropagation()
以在所有浏览器中使用。并不是所有使用“plain”JS的浏览器都是这样工作的,事实上,旧的IE版本根本不支持event.preventDefault()
,它们有自己的等价物event.returnValue = false;
如果您有嵌套的元素,并且在多个级别中处理相同的事件,那么调用
event.preventDefault()
不会停止外部元素的事件处理程序的运行,但是return false
会,因为它会停止事件的传播。下面是一个示例:http://jsfiddle.net/nnnnnn/KjLv3/
警告将显示。如果您更改“a span”处理程序以返回false,则警告将不显示。
iecba09b2#
所以,
//等于