return false vs stopPropagation(), preventDefault(),stopImmediatePropagation()

  传说return false作用很强大,不仅可以阻止事件冒泡,还可以阻止浏览器的默认行为,还可以减少ie系列的bug。今天就来说说return false

     第一次用return false的时候是放在函数里面的,这样当函数作为if条件判断的时候,可以直接用return的返回值,因为返回的正好是个boolean值。还有个额外效果是,在return后面写的语句都不执行,因为在函数里面遇到return,就表示函数已经执行完。

第二次就是用在a作为按钮的时候,阻止浏览器的默认行为,也就是a链接的自动跳转。

术语简介:

那么什么是默认行为呢?就是浏览器会对一些元素默认给予一定的操作,比如a,input[type='submit']等等,默认行为是在事件绑定事件之后执行的,因为在刷新页面的时候,绑定事件就从历史记录里移出了,所以绑定事件要先执行(查看w3c)。

事件对象,event是事件函数触发产生的局部变量,随事件触发而产生,随事件结束而消失。

事件冒泡,就是当在dom结构中,子元素发生的事件,会沿着dom树神经一直传到document上,而不是单单只在本元素发生事件

所以,对于事件冒泡和浏览器的默认行为,作为事件对象,自然有他自己的处理方法,e.stopPropagation()和e.stopImmediatePropagation()都是用来阻止事件冒泡的。只是这两个方法有个区别,就是后面的方法不仅阻止了一个事件的冒泡,也把这个元素上的其他绑定事件也阻止了。而前者只是阻止一个绑定事件的冒泡,而不影响其他绑定事件执行。e.preventDefault()是用来阻止浏览器的默认行为的。

return false很强大,可以同时阻止事件冒泡和浏览器的默认行为。

那么你也许会问,既然有return false,那干嘛还有有其他的方法呢?这个嘛,事物既然存在就是有它的道理的。所以,当你需要阻止默认行为,但是又需要让他有事件冒泡行为的时候,你就不能用return false咯

 

参考:

http://api.jquery.com/event.stopImmediatePropagation/

http://css-tricks.com/return-false-and-prevent-default/

http://www.quirksmode.org/js/events_order.html

http://www.quirksmode.org/js/events_early.html

http://www.neoease.com/stoppropagation-and-preventdefault-and-return-false/

 

 

posted @ 2013-05-17 17:01  enggirl  阅读(705)  评论(0编辑  收藏  举报