jquery:event.stopImmediatePropagation()vs return false

Arj*_*jun 58 javascript jquery events

调用event.stopImmediatePropagation()return false内部事件处理程序之间有什么区别吗?

Fel*_*ing 150

是的他们是不同的.

return false与调用两者基本相同,event.stopPropagation()event.preventDefault().

event.stopImmediatePropagation()相同event.stopPropagation() 防止相同元件上的其他注册事件处理程序被执行.因此,它不会阻止事件的默认操作,例如跟随单击的链接.

简而言之:

                            stop   |    prevent     | prevent "same element"
                          bubbling | default action | event handlers

return false                 Yes           Yes             No
preventDefault               No            Yes             No
stopPropagation              Yes           No              No
stopImmediatePropagation     Yes           No              Yes
Run Code Online (Sandbox Code Playgroud)

return false 也适用于"普通"JavaScript事件处理程序

event.stopPropagation()并且event.preventDefault()还在"普通"JavaScript事件处理程序(在W3C兼容的浏览器中)工作,而event.stopImmediatePropagation()jQuery是一个扩展(更新:显然它是DOM Level 3 Events规范的一部分).

注意: return false 不会阻止事件在"普通"(非jQuery)事件处理程序中冒泡(请参阅此答案)(但仍会阻止默认操作).


也许值得一读: