我在这里写的对于 是正确的, 对于普通javascript事件,请在答案底部阅读@TJ Crowder评论
return false
在回调中可以防止出现默认行为。例如,在某种情况submit
下,它不提交表单。
return false
也会停止冒泡,因此元素的父代将不知道事件的发生。
当然,该return xxx
行之后存在的所有代码都不会执行。(与我所知道的所有编程语言一样)
一个 “真实”的 演示讲解的区别return false
和event.preventDefault()
:
<div id="theDiv">
<form id="theForm" >
<input type="submit" value="submit"/>
</form>
</div>?
$('#theDiv').submit(function() {
alert('DIV!');
});
$('#theForm').submit(function(e) {
alert('FORM!');
e.preventDefault();
});?
现在…当用户提交表单时,第一个处理程序是表单提交,preventDefault()
->不会提交表单,但是事件冒泡到div,触发了它的提交处理程序。
现在,如果表单提交者的处理程序将通过以下方式取消冒泡return false
:
$('#theDiv').submit(function() {
alert('DIV!');
});
$('#theForm').submit(function(event) {
alert('FORM!');
return false;
// Or:
event.preventDefault();
event.stopPropagation();
});?
div甚至都不知道有表单提交。
从DOM2处理程序(addEventListener
)返回false 根本不执行任何操作(既不会阻止默认设置,也不会停止冒泡;从Microsoft DOM2-ish处理程序(attachEvent
),它阻止默认设置,但不会冒泡;从DOM0处理程序(onclick="return ..."
),它阻止默认设置(只要您在属性中包含return即可)但不冒泡;在jQuery事件处理程序中,这两者都可以实现,因为这是jQuery的细节和实时测试–