如何在jQuery中阻止事件冒泡?

35

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

例如,我有以下代码:

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

如何让触发事件仅在冒泡时第一个元素上被触发一次?我可以只添加 return false 吗?

$('.myclass').bind('amodaldestroy', function(){
     ....does something.....
    return false;
})
5个回答

48
根据jQuery的文档
$('myclass').bind('amodaldestroy'), function(event) {
    ....does something....
    event.stopPropagation();
});

13

8

针对IE < 9 的支持:

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

6

这可能不是太好,但

return false;

return false会同时执行stopPropagationevent.preventDefault...

如果你只想要其中一个,可以根据你的选择进行选择。

请阅读这篇文章,这是来自SO的内容。

return false实际上是同时执行了preventDefault和stopPropogation。

preventDefault会阻止默认事件的发生,stopPropagation会阻止事件冒泡,而return false会同时执行两者。


这太棒了,stopPropagation 在我的情况下失败了,我猜是因为同一个元素上有太多事件(第三方)。 - undefined


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接