我知道stopPropagation()
阻止事件到达包装当前元素的DOM元素。它是否也阻止将此事件传递给同一元素上的其他处理程序?
举个例子,我在元素上定义了自己的点击处理程序。另外我还使用这个jQuery Context Menu插件来处理mousedown+(testbutton == 2)+mouseup
并在鼠标(up | down)之后使用stopPropagation()
这似乎禁用了我的点击处理程序。如果我在插件源中注释这两个调用,我的点击处理程序和上下文菜单正常工作。这似乎表明stopPropagation()
和stopImmediatePropgation()
做同样的事情。我的理解是否正确?
答案 0 :(得分:3)
stopPropagation
不会阻止同一事件的其他处理程序,但在这种特定情况下它会停止。如果您在mousedown
事件中使用它,则会阻止click
事件。
$('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
事件。