javascript - jQuery event.stopPropagation() 是否停止该事件的所有回调,或者仅停止其声明的回调?

标签 javascript jquery events event-handling jquery-events

我有一个关于 jQuery 的 event.stopPropagation() 的问题。 event.stopPropagation() 是否会阻止该目标元素(不一定是相同的目标,而是相同的父级)上该事件的所有回调函数冒泡到父级或仅声明它的父级?为了详细说明,假设我有这个:

$('#someId').on('mousedown touchstart MSPointerDown', function(e){
    e.preventDefault();
    e.stopPropagation();
    $(e.target).toggleClass('blue');
});
$('#someId').on('mousedown touchstart MSPointerDown', function(e){
    $(e.target).toggleClass('blue');
});

$('#someId').children()[0].on('mousedown touchstart MSPointerDown', function(e){
    e.preventDefault();
    e.stopPropagation();
    $(e.target).toggleClass('blue');
});
$('#someId').children()[1].on('mousedown touchstart MSPointerDown', function(e){
    $(e.target).toggleClass('blue');
});

或者我是否需要在两者中都有 e.stopPropagation() 以防止回调表单冒泡?

最佳答案

在你的第二个例子中,这两个事件根本不相关,所以你必须这样对待它们;它们都需要被阻止。

stopPropagation 将阻止事件在 dom 上传播,但不会阻止绑定(bind)到同一元素和事件的其他事件处理程序。为此,您需要 stopImmediatePropagation

关于javascript - jQuery event.stopPropagation() 是否停止该事件的所有回调,或者仅停止其声明的回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25289688/

相关文章:

php - 倒计时器与php mysql交互

asp.net - ASP.net AJAX 中未捕获 JQuery ajaxStart 事件

Javascript 扩展类

javascript - 如何为我的 Handlebars 模板创建 Action 助手?

javascript - 在 promise 之外返回一个 promise 变量

javascript - 实时用 anchor 链接替换主题标签

delphi - 我的 Delphi 应用程序完成初始化后,我应该在哪里放置要执行的代码?

c# - 如何在具有多个相同控件的窗体上实现接口(interface)?

javascript - 单击内部元素时停止执行容器 div 中的 onClick 函数

javascript - 显示数据表响应模式后我可以调用函数吗