我手边没有示例,但在某些情况下,调用event.preventDefault()
会让原始事件通过(导航到页面,提交表单等)但返回false会有所帮助。什么可能导致这种情况?
答案 0 :(得分:1)
你手边没有例子吗?好的,让我发明一个可能是也可能不是你想到的东西。
请注意,return false;
相当于同时调用event.preventDefault();
和event.stopPropagation()
。 编辑:这适用于jQuery ,它明确地实现了此行为,并将event.preventDefault()
和event.stopPropagation()
标准化,以便在所有浏览器中使用。它在所有具有“普通”JS的浏览器中都不起作用,实际上旧的IE版本根本不支持event.preventDefault()
,它们有自己的等效event.returnValue = false;
如果你有嵌套元素,并且你在几个级别处理同一个事件,那么调用event.preventDefault()
不会阻止外部元素的事件处理程序运行,但是return false
会因为它停止传播事件
演示它的示例:http://jsfiddle.net/nnnnnn/KjLv3/
<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,则不会显示警报。
答案 1 :(得分:1)
event.preventDefault()阻止浏览器执行默认操作(如果事件可取消),而不会停止事件的进一步传播,而 return false 可防止事件传播(或“冒泡”)DOM,同时阻止默认操作。
所以,
function() {
return false;
}
//等于
function(e) {
e.preventDefault();
e.stopPropagation();
}