有一个jQuery .click()事件只在内部另一个.click()事件中触发一次

时间:2012-04-02 20:37:06

标签: javascript jquery click

如果我有一个jQuery .click()事件同时触发“body”和“div”,那么当点击div时,我怎么才能让它只执行div而不是body?基本上,我正在创建自己的上下文菜单,我想点击元素外的任何地方(在这种情况下,“div.button”)来关闭菜单。

基本的例子:

  $("body").click(function(event){
    if($("div.menu").is(":visible")){
      $("div.menu").hide();
    }
  });

  $("div.button").click(function(event){
    $("div.menu").show();
  });

你可以猜到,$(“body”)。click()会阻止/隐藏菜单甚至显示。

非常感谢一点指导。谢谢你的阅读!

3 个答案:

答案 0 :(得分:6)

答案 1 :(得分:5)

你必须停止传播像这样的事件

$("div.button").click(function(event){
  event.stopPropagation();
  // do something
});

仅点击您的按钮

答案 2 :(得分:1)

您想在click元素中使用event.stopPropagation()。所以:

$( 'div.button' ).click(function( e ) {
    e.stopPropagation();
    $( 'div.menu' ).show();
});