Droite ... J'ai besoin de trouver tous les éléments <ul style = "display: block;">, afin de pouvoir le définir, afficher: aucun.
Je pense que je suis sur la bonne voie ici ... mais pas tout à fait là:
jQuery('#adminMenu li').find("ul").css('display');
Pour les utilisateurs avancés: comment puis-je trouver et changer le style avec une seule ligne?
C'est délicat comme indiqué, mais il est résolu d'autres façons. 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 tous les cacher, pourquoi pas seulement:
$("#adminMenu li ul").hide();
Essayez d'éviter de changer directement le style CSS. C'est problématique. C'est difficile à inverser et à mesure que vous découvrez qu'il est difficile de rechercher. Utilisez plutôt une classe:
#adminMenu li ul { display: none; }
ul.block { display: block; }
avec:
$("#adminMenu li ul").removeClass("block");
ou
$("#adminMenu li ul.block").removeClass("block");
Vous pourrez peut-être utiliser les sélecteurs d'attributs et l'option "contient"
$('#adminMenu li ul[style*="display:block"]').hide()
Cela dit essentiellement "tout attribut de style ul who contient le texte affiché: bloc"
Vous pouvez utiliser un filtre. ( http://api.jquery.com/filter/ )
Vous pouvez donc faire comme ci-dessous.
$('ul').filter(function() {
return $(this).css('display') == 'block';
});
$('#adminMenu li').find("ul:visible").css('display', 'none');
ou
$('#adminMenu li').find("ul:visible").hide();
ou
$('#adminMenu li ul:visible').hide();
pour citer quelques façons
Vous pouvez utiliser les méthodes fadeOut () et slideUp () pour un effet visuel:
jQuery('#adminMenu li').find("ul").fadeOut('fast');
jQuery('#adminMenu li').find("ul").slideUp('fast');
$('#adminMenu li ul').hide();
Je ne sais pas comment le faire en une seule ligne, mais voici comment vous pouvez le faire en quelques autres:
jQuery('#adminMenu li').find("ul").each(function (){
if($(this).css("display") == "block"){
// do something
}
});
Si vous voulez gérer tous les éléments visibles (au lieu de seulement le display: block
ones), vous pouvez essayer le :visible
sélecteur à la place.