JQUERY中的事件处理:RETURN FALSE、阻止默认行为、阻止冒泡以及兼容性问题

return false浏览器

在jQuery中,咱们经常使用return false来阻止浏览器的默认行为,那”return false“到底作了什么?函数

当你每次调用”return false“的时候,它实际上作了3件事情:对象

  • event.preventDefault();事件

  • event.stopPropagation();get

  • 中止回调函数执行并当即返回。回调函数

对,你没看错,return false确实作了这么多操做。它之因此被一再无误用,是由于使用它后看起来像是完成了咱们的阻止任务,而且语句也很简单。io

这3件事中用来阻止浏览器继续执行默认行为的只有preventDefault,除非你想要中止事件冒泡,不然使用return false会为你的代码埋下很大的隐患。event

preventDefault()兼容性

大多数状况下,当你使用return false时,你其实真正须要的是e.preventDefault()。要使用e.preventDefault,你须要确保你传递了event参数到你的回掉函数中。它会替咱们完成全部工做,但不会阻止父节点继续处理事件,要记住,你放在代码中的限制越少,你的代码就越灵活,也就越易于维护。plugin

但在使用中你会发现preventDefault有兼容性问题,老版本的IE并不理会这个方法,依然我行我素,此时咱们须要一点兼容代码来搞定IE:

       window.event.returnValue=  false;//返回值设为false
       window.event.keyCode = 0;//若是你想阻止键盘的默认行为,如F5,则这句也是须要的

stopPropagation()

有些状况下,你有可能须要中止事件冒泡,直接使用stopPropagation便可。

stopImmediatePropagation()

这个方法会中止对象上相关事件的继续执行,即便当前的对象上还绑定了其它处理函数。有时你的代码很是复杂,不一样的widgets和plugin就有可能在同一个对象上添加事件,若是遇到这种状况,那你就颇有必要理解和使用stopImmediatePropagation。

相关文章
相关标签/搜索