event.stopPropagation()
防止事件冒泡到 DOM 树上,也就是不触发任何父元素上的事件处理函数。
-
1.0 新增event.stopPropagation()
我们可以用 event.isPropagationStopped()
来确定这个方法是否(在那个事件对象上)被调用过了。
这个方法对使用 trigger() 进行自定义的事件同样有效。
注意,该方法不会阻止同一个元素上的其它事件处理函数的运行。
补充说明:
- 因为
.live()
事件一旦被传播到文档顶部,就不可能再阻止 live 事件的传播。类似的,通过.delegate()
执行的事件,也会传播到调用它们的元素上。同时,任何在 DOM 树中,比这些元素低的元素上绑定的相同事件,在.delegate()
事件被调用的时候,也会被触发。因此,如果要在事件中阻止委托事件被触发,可以通过调用event.stopPropagation()
方法,或返回false
的方式来实现。
示例:
禁止 click 事件的冒泡。
jQuery 代码:
$("p").click(function(event){
event.stopPropagation();
// do something
});