Jquery关闭单击事件的菜单div

时间:2010-03-29 13:58:23

标签: javascript jquery

我点击菜单按钮后会打开一个div,如果用户在打开后点击任意位置,我会尝试关闭它。我遇到的问题是,我的代码显示div和用户点击时关闭div我猜是因为某种原因同时触发。 click事件的代码如下。我怎样才能使它们不会同时触发,当我打开不触发点击功能的div时。谢谢!

//if user clicks and menu is open then hide menu div
$(document).click(function() { 
       if($("menu").hasClass("menu_closed") == false ) { 
           //will hide the menu div
           closeMenu();
       }
}

2 个答案:

答案 0 :(得分:2)

我认为您实际想要的是在其他点击处理程序中停止传播,例如:

$("your_menu_selector").bind("click", function(e){

   //your code to open the menu

   e.stopPropagation();
   return false;
})

答案 1 :(得分:0)

您可能需要考虑添加事件处理程序以关闭打开菜单的处理程序中的菜单。使用one方法只执行一次。在打开菜单的处理程序中,只需检查它是否已打开,如果是,则执行no-op。

 $('.openButton').click( function() {
      var $menu = $('#menu').
      if ($menu.hasClass('menu_closed')) {
         $menu.removeClass('menu_closed').addClass('menu_open');
         $(document).one( function() {
             $menu.removeClass('menu_open').addClass('menu_closed');
         });
      }
 });