0

我知道这会stopPropagation()阻止事件到达包装当前元素的 DOM 元素。它是否还会阻止此事件传递给同一元素上的其他处理程序?

举个例子,我在一个元素上定义了我自己的点击处理程序。此外,我还在使用这个jQuery 上下文菜单插件,它处理 amousedown+(testbutton == 2)+mouseupstopPropagation()在 mouse(up|down) 之后使用,这似乎禁用了我的点击处理程序。如果我在插件源代码中注释这两个调用,我的单击处理程序和上下文菜单将正常工作。这似乎暗示了这一点stopPropagation()stopImmediatePropgation()做同样的事情。我的理解正确吗?

4

1 回答 1

3

stopPropagation不会停止同一事件的其他处理程序,但在这种特定情况下会停止。如果在mousedown事件中使用它,它将阻止click事件。

演示:http: //jsfiddle.net/v6ges/

$('div').mousedown(function(e){ alert(0); e.stopPropagation(); });
$('div').click(function(e){ alert(1); e.stopPropagation(); });
$('div').click(function(e){ alert(2); e.stopPropagation(); });

mousedown触发事件。如果您注释掉mousedown事件绑定,这两个click事件都会被触发。

于 2012-08-18T19:32:07.240 回答