在大多数情况下,为事件处理函数返回false,可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转到该元素href属性指定的页.
Return False 就相当于终止符,Return True 就相当于执行符。
<a class="testReturn" href="http://www.baidu.com">百度</a>
$(".testReturn").on('click',function(e){
alert("test");
return false;
})//链接不会跳转
<form action="form_action.asp" method="post" id="subForm">
<p>First name : <input type="text" name="fname"/></p>
<p>Last name : <input type="text" name="lname"/></p>
<input type="submit" value="submit"/>
</form>
function submitAction(){
alert();
return false;
}
$("#subForm").on("submit",submitAction);
submitAction 方法里面有提交表单的动作。如果不加 return false,在执行完 submitAction 之后,submit 按钮还会继续执行它的默认事件,就会再次提交表单。这可能就是很多错误的根源。
的确,return false的含义不是阻止事件继续向顶层元素传播,而是阻止浏览器对事件的默认处理。你可以这样试验:首先将所有的js脚本注释掉,在IE浏览器中尝试拖动一下图片,你会发现鼠标会成为禁止操作的样式,图片是被禁止拖动的,它是浏览器针对mousemove事件所提供的默认行为。return false就是为了去掉这种行为,否则就会出现你描述的中断事件连续执行。
另外,和return false等效的语句为:window.event.returnValue = false,你可以把return false替换为此语句并进行验证。
最后说明一下,此种方式只适用于IE浏览器。