2011-06-06 5 views
0

J'utilise plutôt la méthode jquery simple dans une liste déroulante. Mais le code ne fonctionne pas dans Firefox 3.5 et inférieur ni opéra. Est-ce leur une alternative à ces navigateurs pour planer ou glisser? Son travail grand sur webkit, Firefox 3.6 et IE8 +Problème jQuery hover/slideDown

HTML

<ul id="menu"> 
    <li> 
    <ul> <!-- this is the dropdown part --> 
     <li><a href="#">#</a></li> 
     <li><a href="#">#</a></li> 
    </ul> <!-- end dropdown --> 
    </li> 
</ul> 

jQuery

$('#menu li').hover(
    function() { 
     $('ul', this).slideDown(250); 
    }, 
    function() { 
     $('ul', this).slideUp(250);   
    } 
); 
+0

Pourquoi avez-vous une liste dans une liste? Quel élément voulez-vous faire glisser? L'extérieur, l'intérieur ou les deux? –

+0

@Razor Storm: Je suppose que c'est un menu accordéon. Mais je peux me tromper. Définir "ne fonctionne pas". Y a-t-il des erreurs dans la console du navigateur? –

+0

@Razor Storm n'est pas un accordéon, c'est un menu déroulant et je veux montrer le ul à l'intérieur du premier li .. voulait garder la règle html d'utiliser ul :) .. je viens d'éditer la question avec des commentaires ... – Flash

Répondre

0

Une adaptation de votre code fonctionne parfaitement bien, pour moi, à la fois Chrome 11 et Firefox 4 (Ubuntu 11.04):

$('#menu > li:has("ul")').hover(
    function(){ 
     $(this).find('ul').slideDown(); 
    }, 
    function(){ 
     $(this).find('ul').slideUp(); 
    }); 

JS Fiddle.

Notes:

  • $('#menu > li:has("ul")') est juste un sélecteur plus spécifique (il cible uniquement les descendants de l'élément #menu immédiats, qui sont les deux li éléments et contiennent un élément ul).
  • $(this).find('ul') est le même que votre sélecteur de contexte ($('ul,this)), sauf que l'interne appelle jQuery la méthode $(this).find() de toute façon:

En interne, le contexte de sélection est mis en œuvre avec la méthode .find(), donc $('span', this) est équivalent à $(this).find('span').

Référence: