jquery event.stopPropagation()是否会停止该事件的所有回调,或者只是它声明的回调?

时间:2014-08-13 15:04:54

标签: javascript jquery events javascript-events event-handling

我对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()来阻止回调表单冒泡?

1 个答案:

答案 0 :(得分:1)

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

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