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

jquery clickout边元素

  •  1
  • Val  · 技术社区  · 14 年前

    我的页面上有多个菜单…

    <div class="menu">
       <div>Menu header</div>
       <div>Menu content</div>// should hide on click outside .menu
    </div>
    
    <div class="menu">
       <div>Menu header</div>
       <div>Menu content</div>// should hide on click outside .menu
    </div>
    

    基本上,我需要在检测到单击时隐藏所有菜单,除非有人单击任何菜单,否则应该隐藏除单击菜单之外的任何其他菜单。

    我已经看到一些工作,但只有当你在页面上有一个菜单,这不是完全有用的使用stoppropagation,因为它可以取消任何其他必要的指示;

    任何想法都会被告知。

    1 回复  |  直到 14 年前
        1
  •  3
  •   cletus    14 年前

    尝试:

    $(document).click(function(evt) {
      var menu = $(evt.target).closest("div.menu");
      other = $("div.menu").not(menu).children(":last-child").hide();
      menu.children(":last-child").show();
    });
    

    基本上这听的都是 click() 事件。它确定是否发生在菜单项中。如果是这样,它会显示内容,并隐藏其他内容。否则将隐藏所有菜单内容。