33

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

例如我有这个代码:

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

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

$('.myclass').bind('amodaldestroy', function(){
     ....does something.....
    return false;
})
4

5 回答 5

46

根据 jQuery 的文档

$('myclass').bind('amodaldestroy'), function(event) {
    ....does something....
    event.stopPropagation();
});
于 2010-12-23T20:34:26.850 回答
13

利用event.stopPropagation();

$('.myclass').bind('amodaldestroy', function(e){
    e.stopPropagation();
});

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

于 2010-12-23T20:35:37.597 回答
7

对于 IE < 9 的支持:

$(".element").click(function(e)
{
    var event = e || window.event;
    event.stopPropagation ? event.stopPropagation() : (event.cancelBubble=true);
});
于 2013-04-02T13:09:13.817 回答
4

这可能不是那么好,但是

return false;

return false会同时stopPropagationevent.preventDefault...

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

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

return false实际上是 preventDefault 和 stopPropogation。

preventDefault将阻止默认事件发生,stopPropogation 将阻止事件冒泡,并且 return false 将两者都做。

于 2010-12-23T20:52:36.347 回答
2

http://api.jquery.com/event.stopPropagation/

于 2010-12-23T20:32:39.403 回答