2010-03-29 169 views
1

我有一個div,當我點擊一個菜單按鈕時打開,我試圖關閉它,如果用戶點擊任何地方打開後。我遇到的問題是,用我的代碼顯示div和關閉div當用戶點擊時,我猜是同時出於某種原因發射。點擊事件的代碼如下。我該如何做到這一點,所以他們不會同時開火,當我打開不啓動點擊功能的div時。謝謝!jquery關閉點擊事件菜單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

我想你真正想要的是停止傳播在其他點擊處理程序,是這樣的:

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

    //your code to open the menu 

    e.stopPropagation(); 
    return false; 
}) 
+0

這個工作!非常感謝 – medium 2010-03-29 15:04:23

0

您可能要考慮將事件處理程序關閉菜單的處理程序打開菜單。使用one方法只執行一次。在打開菜單的處理程序中,只需檢查它是否已經打開,如果是,則執行無操作。

$('.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'); 
     }); 
     } 
}); 
+0

,但當專門點擊打開的按鈕時,不會這樣做。我想要菜單關閉,如果我點擊任何地方像Windows樣式菜單。 – medium 2010-03-29 14:11:38

+0

否。單擊打開按鈕時,會向文檔添加一個處理程序,該處理程序將執行一次,並在您單擊頁面上的任何位置時關閉菜單。 – tvanfosson 2010-03-29 14:22:26