如何阻止jQuery冒泡的事件?

Sta*_*ann 30 javascript jquery javascript-events event-bubbling

如何在jQuery中停止自定义事件冒泡?

例如,我有这个代码:

$('.myclass').bind('amodaldestroy', function(){
    ....does something.....
})
Run Code Online (Sandbox Code Playgroud)

我怎么只允许在冒泡时找到的第一个元素上触发一次?我可以添加退货false吗?

$('.myclass').bind('amodaldestroy', function(){
     ....does something.....
    return false;
})
Run Code Online (Sandbox Code Playgroud)

Dan*_* T. 43

根据jQuery的文档:

$('myclass').bind('amodaldestroy'), function(event) {
    ....does something....
    event.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)


Rus*_*Cam 13

使用 event.stopPropagation();

$('.myclass').bind('amodaldestroy', function(e){
    e.stopPropagation();
});
Run Code Online (Sandbox Code Playgroud)

你也可以使用,return false但两者之间存在细微差别,因为返回false也会调用event.preventDefault();


Dav*_*ret 7

对于IE <9中的支持:

$(".element").click(function(e)
{
    var event = e || window.event;
    event.stopPropagation ? event.stopPropagation() : (event.cancelBubble=true);
});
Run Code Online (Sandbox Code Playgroud)


kob*_*obe 6

这可能不是那么好,但是

return false;
Run Code Online (Sandbox Code Playgroud)

return false会同时做stopPropagation并且event.preventDefault...

如果您只想要一个,您可以根据自己的选择进行选择

请阅读此内容,这仅来自 SO

return false实际上,preventDefault 和 stopPropogation 都是有效的。

preventDefault会阻止默认事件的发生,stopPropogation会阻止事件冒泡,而 return false 会同时执行这两个操作。