event.stopPropagation()

防止事件冒泡到 DOM 树上,也就是不触发任何父元素上的事件处理函数。

我们可以用 event.isPropagationStopped() 来确定这个方法是否(在那个事件对象上)被调用过了。

这个方法对使用 trigger() 进行自定义的事件同样有效。

注意,该方法不会阻止同一个元素上的其它事件处理函数的运行。

补充说明:

  • 因为 .live() 事件一旦被传播到文档顶部,就不可能再阻止 live 事件的传播。类似的,通过 .delegate() 执行的事件,也会传播到调用它们的元素上。同时,任何在 DOM 树中,比这些元素低的元素上绑定的相同事件,在 .delegate() 事件被调用的时候,也会被触发。因此,如果要在事件中阻止委托事件被触发,可以通过调用 event.stopPropagation() 方法,或返回 false 的方式来实现。

示例:

禁止 click 事件的冒泡。

jQuery 代码:
$("p").click(function(event){
  event.stopPropagation();
  // do something
});