我对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()
来阻止回调表单冒泡?
答案 0 :(得分:1)
在你的第二个例子中,这两个事件根本没有关系,所以你必须这样对待它们;他们都需要被阻止。
stopPropagation
将阻止事件向上传播dom,但它不会阻止绑定到同一元素和事件的其他事件处理程序。为此,您需要stopImmediatePropagation
。