2009-10-13 5 views

Répondre

24

C'est délicat comme indiqué, mais est résoluble d'autres moyens. Le plus simple est:

$("#adminMenu li ul:visible").hide(); 

en supposant que les éléments sont cachés ou non. Bien sûr, étant donné que vous voulez les cacher tout pourquoi pas seulement:

$("#adminMenu li ul").hide(); 

Essayez et éviter de changer de style CSS directement. C'est problématique. Il est difficile de revenir en arrière et comme vous trouvez difficile de chercher. Utilisez une classe à la place:

#adminMenu li ul { display: none; } 
ul.block { display: block; } 

avec:

$("#adminMenu li ul").removeClass("block"); 

ou

$("#adminMenu li ul.block").removeClass("block"); 
0
$('#adminMenu li').find("ul:visible").css('display', 'none'); 

ou

$('#adminMenu li').find("ul:visible").hide(); 

ou

$('#adminMenu li ul:visible').hide(); 

pour ne citer que quelques façons

0

Vous coud utiliser les méthodes fadeOut() ou slideUp() pour un effet visuel:

jQuery('#adminMenu li').find("ul").fadeOut('fast'); 

jQuery('#adminMenu li').find("ul").slideUp('fast'); 
0
$('#adminMenu li ul').hide(); 
+0

vous avez la citation erronée à la fin;) –

+0

Merci, mais je pense avoir la mauvaise réponse, il est plus celui-ci: http: // stackoverflow.com/questions/1562634/besoin-d'utiliser-jquery-trouver-trouver-element-avec-specific-style/1562680 # 1562680 – powtac

0

Je ne sais pas comment le faire en une ligne, mais voici comment vous pouvez le faire dans un couple plus:

jQuery('#adminMenu li').find("ul").each(function(){ 
    if($(this).css("display") == "block"){ 
    // do something 
    } 
}); 

Si ce que vous voulez est de gérer tous les éléments visibles (au lieu de seulement les display: block les), vous pouvez essayer le sélecteur :visible à la place.

19

Vous pourriez être en mesure d'utiliser les sélecteurs d'attributs, et « contient » l'option

$('#adminMenu li ul[style*="display:block"]').hide() 

Cela dit essentiellement « tout ul qui est l'attribut style contient l'affichage du texte: bloc »

+0

Pour moi (en jQuery-1.9.0) cela donne 'Erreur de syntaxe, expression non reconnue : ul [style * = display: block] ' –

+0

Modifié pour inclure les guillemets manquants –

+1

C'est une bonne idée d'utiliser ce sélecteur générique. Je me demande si c'est plus rapide que les autres suggestions. OP: vous voudrez peut-être envisager une cible plus large. Par exemple, s'il y avait, pour une raison quelconque, un espace parfaitement valide entre 'display: block', cela ne fonctionnerait pas. Mais ce serait '[style * =" block "]' en supposant que ce n'est pas trop large pour votre but. – dhaupin

Questions connexes