代码之家  ›  专栏  ›  技术社区  ›  Aximili

jquery:处理后台/容器单击

  •  2
  • Aximili  · 技术社区  · 15 年前

    我有一个大div,div里面有一个小按钮。

    当div被点击时,我希望它做些什么。
    当按钮被点击时,我希望它做些别的事情。

    $('#myDiv').click(OnDivClicked);
    $('#myButton').click(OnButtonClicked);
    

    当前单击按钮时,OnDivClicked和OnButtonClicked都会被触发。

    如何防止单击按钮时OnDivClicked被激发?

    提前谢谢。

    1 回复  |  直到 15 年前
        1
  •  5
  •   Nick Craver    15 年前

    您需要使用 event.stopPropagation() ,像这样:

    $('#myButton').click(function(e) {
      OnButtonClicked();
      e.stopPropagation();
    });
    

    默认情况下,许多事件会一直向其父级冒泡到dom根,导致同一事件类型的事件处理程序被触发……要停止此操作,只需像上面的代码那样停止冒泡行为。如果不需要执行默认操作, return false; 也会做到这一点。

    两者的区别 e.StopPopagation() 返回false; 更重要的是,抛锚,只会阻止泡沫 解雇父母的 click 处理器但 按照链接,然而 return false 会做 也不 .