2010-03-29 6 views
1

메뉴 버튼을 클릭 할 때 div가 열리고, 사용자가 아무 데나 클릭하면 해당 버튼을 닫으려고합니다. 내가 겪고있는 문제는 사용자가 클릭 할 때 내 코드에서 show div와 close div가 있는데 어떤 이유로 든 동시에 실행되는 것입니다. click 이벤트의 코드는 아래와 같습니다. 어떻게하면 동시에 발사하지 않도록 할 수 있으며 클릭 기능을 실행하지 않는 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

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

하지만이 버튼은 구체적으로 열기 버튼을 클릭 할 때만 작동합니다. 창 스타일 메뉴 같은 곳을 클릭하면 메뉴가 닫히고 싶습니다. – medium

+0

번호 열기 버튼을 클릭하면 한 번 실행될 문서에 핸들러가 추가되고 페이지의 아무 곳이나 클릭하면 메뉴가 닫힙니다. – tvanfosson

관련 문제