2010-03-29 6 views
1

J'ai un div qui s'ouvre quand je clique sur un bouton de menu, j'essaye de le fermer si l'utilisateur clique n'importe où après qu'il soit ouvert. Le problème que je rencontre est que, avec mon code, le div show et le div proche quand un utilisateur clique je suppose tirent en même temps pour une raison quelconque. Le code de l'événement click est ci-dessous. Comment puis-je faire en sorte qu'ils ne tirent pas en même temps et quand j'ouvre le div qui ne déclenche pas la fonction de clic. Merci!Jquery Fermer le menu div sur un événement click

//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(); 
     } 
} 

Répondre

2

Je pense que ce que vous voulez est en fait pour arrêter la propagation dans l'autre gestionnaire de clic, quelque chose comme:

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

    //your code to open the menu 

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

cela a fonctionné! Merci beaucoup – medium

0

Vous voudrez peut-être envisager d'ajouter le gestionnaire d'événements pour fermer le menu dans le gestionnaire qui ouvre le menu. Faites-le exécuter une seule fois en utilisant la méthode one. Dans le gestionnaire qui ouvre le menu, vérifiez simplement s'il est déjà ouvert et faites un no-op si c'est le cas.

$('.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

mais ne fonctionne pas seulement lorsque vous cliquez spécifiquement sur le bouton d'ouverture. Je veux que le menu se ferme si je clique n'importe où comme un menu de style de Windows. – medium

+0

Non. Lorsque vous cliquez sur le bouton d'ouverture, un gestionnaire est ajouté au document qui s'exécute une fois et ferme le menu lorsque vous cliquez n'importe où sur la page. – tvanfosson

Questions connexes