2011-05-06 4 views
0

comment puis-je modifier ce code afin que le menu tombe lorsque le ("ul.topnav li") est plané et non le . quand j'ai changé le code, tous les ("ul.subnav) ont chuté quand j'ai survolé.jquery menu déroulant

grâce,

<script language="javascript" type="text/javascript"> 
    $(document).ready(function() { 

     $("ul.subnav").parent().append("<span></span>"); 

     //When trigger is clicked... 
     $("ul.topnav li span").mouseenter(function() { 

      //Following events are applied to the subnav itself 
      //(moving subnav up and down) 

      //Drop down the subnav on click 
      $(this).parent().find("ul.subnav").slideDown('fast').show(); 

      $(this).parent().hover(function() { 
      }, function() { 
       //When the mouse hovers out of the subnav, move it back up 
       $(this).parent().find("ul.subnav").slideUp('slow'); 
      }); 

     //Following events are applied to the trigger 

     }).hover(function() { //(Hover events for the trigger) 

      $(this).addClass("subhover"); //On hover over, add class "subhover" 
     }, function() { //On Hover Out 

      //On hover out, remove class "subhover" 
      $(this).removeClass("subhover"); 
     }); 

    }); 


</script> 
+0

Je pense que vous sélectionnez le parent de la navigation ul qui glissait des sous navs à glisser vers le bas this.slidetoggle() –

Répondre

2

Lorsque vous modifiez l'attachement de l'événement .mouseenter() au li, il change la portée de tout à l'intérieur de la fonction. Heureusement, tout le code à l'intérieur essaie juste de revenir au parent li du span qu'il ciblait à l'origine. Donc, pour résoudre ce problème. vous supprimez simplement les appels à parent() le cas échéant.

<script language="javascript" type="text/javascript"> 
    $(document).ready(function() { 

     $("ul.subnav").parent().append("<span></span>"); 

     //When trigger is clicked... 
     $("ul.topnav li").mouseenter(function() { 

      //Following events are applied to the subnav itself 
      //(moving subnav up and down) 

      //Drop down the subnav on click 
      $(this).find("ul.subnav").slideDown('fast').show(); 

      $(this).parent().hover(function() {}, 
      function() { 
       //When the mouse hovers out of the subnav, move it back up 
       $(this).find("ul.subnav").slideUp('slow'); 
      }); 

     //Following events are applied to the trigger 

     }).hover(function() { //(Hover events for the trigger) 

      $(this).addClass("subhover"); //On hover over, add class "subhover" 
     }, function() { //On Hover Out 

      //On hover out, remove class "subhover" 
      $(this).removeClass("subhover"); 
     }); 

    }); 
</script> 
+0

je l'ai déjà fait remarquer que, mais je suppose que j'avais raison alors ... eh –

+0

N'a pas vu votre commentaire \: Impossible de marquer les commentaires comme des réponses acceptées, donc cette question ne serait jamais "fermé" sans une réponse \: –

+0

non non d'accord je n'étais pas sûr de ma réponse, donc je me suis réjoui que vous avez répondu. Je ne voulais juste pas mettre une demi-réponse dans la "réponse" –