stopPropagation是否也阻止同一元素上的其他处理程序运行?

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

举个例子,我在一个元素上定义了自己的点击处理程序。 另外我还使用这个jQuery Context Menu插件来处理mousedown+(testbutton == 2)+mouseup并在鼠标(up | down)之后使用stopPropagation() ),这似乎禁用了我的点击处理程序。 如果我在插件源中注释这两个调用,我的点击处理程序和上下文菜单正常工作。 这似乎表明stopPropagation()stopImmediatePropgation()做同样的事情。 我的理解是否正确?

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事件。