Javascript jQuery.click()事件在另一个.click()事件中仅触发一次

Javascript jQuery.click()事件在另一个.click()事件中仅触发一次,javascript,jquery,click,Javascript,Jquery,Click,如果我对“body”和“div”都有一个jQuery.click()事件触发,我如何让它在单击div时只对div执行,而不是对body执行?基本上,我正在创建自己的上下文菜单,我希望单击元素之外的任何位置(在本例中为“div.button”)以关闭菜单 基本示例: $("body").click(function(event){ if($("div.menu").is(":visible")){ $("div.menu").hide(); } }); $

如果我对“body”和“div”都有一个jQuery.click()事件触发,我如何让它在单击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()会阻止/隐藏菜单甚至不显示


如果您能给我一点指导,我将不胜感激。谢谢你的阅读

您必须停止像这样传播事件

$("div.button").click(function(event){
  event.stopPropagation();
  // do something
});
只会单击您的按钮


event.stopPropagation()

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

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

你们的速度真是太快了。谢谢谢谢你的帮助,先生。非常感谢你。