如何停止jQuery中冒泡的事件? [重复]

问题描述 投票:31回答:5

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

例如,我有此代码:

$('.myclass').bind('amodaldestroy', function(){
    ....does something.....
})

我如何只允许它在冒泡时找到的第一个元素上触发一次?我可以只添加返回false吗?

$('.myclass').bind('amodaldestroy', function(){
     ....does something.....
    return false;
})
javascript jquery jquery-events event-bubbling
5个回答
44
投票

根据jQuery的documentation

$('myclass').bind('amodaldestroy'), function(event) {
    ....does something....
    event.stopPropagation();
});

13
投票

使用event.stopPropagation();

event.stopPropagation();

您也可以使用$('.myclass').bind('amodaldestroy', function(e){ e.stopPropagation(); }); ,但是两者之间的细微差别在于,返回false也会调用return false


7
投票

对于IE <9中的支持:

event.preventDefault();

4
投票

这可能不是很好,但是

event.preventDefault();

[$(".element").click(function(e) { var event = e || window.event; event.stopPropagation ? event.stopPropagation() : (event.cancelBubble=true); }); 将同时执行return false; return false

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

请阅读,这仅来自SO

[stopPropagation有效地是preventDefault和stopPropogation。

[event.preventDefault...将阻止默认事件的发生,return false n将阻止事件的冒泡并返回false将同时执行这两项。


2
投票

preventDefault

© www.soinside.com 2019 - 2024. All rights reserved.