【问题标题】:How to stop events bubbling in jQuery? [duplicate]如何在 jQuery 中阻止事件冒泡? [复制]
【发布时间】:2011-05-30 03:58:39
【问题描述】:

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

例如我有这个代码:

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

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

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

【问题讨论】:

    标签: javascript jquery jquery-events event-bubbling


    【解决方案1】:

    根据jQuery的documentation:

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

    【讨论】:

      【解决方案2】:

      使用event.stopPropagation();

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

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

      【讨论】:

        【解决方案3】:

        对于 IE

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

        【讨论】:

          【解决方案4】:

          这可能不是那么好,但是

          return false;
          

          return false 将同时执行 stopPropagation 和 event.preventDefault...

          如果你只想要一个,你可以根据你的选择来选择

          请阅读这篇文章,这只是来自 SO

          return false 实际上是 preventDefault 和 stopPropogation。

          preventDefault 将阻止默认事件的发生,stopPropogation 将阻止事件冒泡,并且 return false 将同时进行。

          【讨论】:

            【解决方案5】:
            猜你喜欢
            • 1970-01-01
            • 2023-03-31
            • 1970-01-01
            • 2013-08-07
            • 1970-01-01
            • 1970-01-01
            • 2010-12-30
            • 2011-10-20
            • 1970-01-01
            相关资源
            最近更新 更多