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

标签 javascript jquery contextmenu jquery-events

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

举个例子,我在元素上定义了自己的点击处理程序。另外我也在用这个jQuery Context Menu插件处理 mousedown+(testbutton == 2)+mouseup 并在 mouse(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 事件绑定(bind),则两个 click 事件都会被触发。

关于javascript - stopPropagation 是否还会阻止同一元素上的其他处理程序运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12021602/

相关文章:

javascript - Fancybox 不会使用通过 javascript 传递的内容

.net - 将菜单项添加到默认上下文菜单

javascript - 存储一个数组以在不同页面上访问

java - 如何在 Tomcat 中为多个错误代码使用相同的错误页面?

jquery - .addClass() 其中 data-id 等于 data-category?

javascript - 在 Chrome 扩展程序中复制链接 Href

asp.net - 使用 PopupControlExtender 实现右键单击上下文菜单?

javascript - 禁用 PDF Web View 元素中的工具栏以禁用下载和打印

javascript - Angular 2 : call component method from javascript function

javascript - 如何设置元素的宽度等于窗口的宽度?