jQuery :Pouvez-vous sélectionner par règle CSS, pas par classe ?
-
09-06-2019 - |
Question
Un .container peut contenir de nombreux .components, et les .components eux-mêmes peuvent contenir des .containers (qui à leur tour peuvent contenir des .components, etc.etc.)
Étant donné un code comme celui-ci :
$(".container .component").each(function(){
$(".container", this).css('border', '1px solid #f00');
});
Que dois-je ajouter à la ligne entre les accolades pour sélectionner uniquement les .containers imbriqués dont la largeur en CSS est définie sur « auto » ?Je suis sûr que c'est quelque chose de simple, mais je n'ai pas vraiment beaucoup utilisé jQuery.
La solution
$(".container .component").each(function()
{
$(".container", this).each(function() {
if($(this).css('width') == 'auto')
{
$(this).css('border', '1px solid #f00');
}
});
});
Semblable à l'autre réponse, mais comme les composants peuvent également avoir plusieurs conteneurs, ils nécessitent également l'enregistrement .each() ici également pour la largeur.
Autres conseils
Vous voudrez peut-être examiner .filter()
.
Quelque chose comme:
$('.container .component .container')
.filter(function() {return $(this).css('width') == 'auto';})
.css({border: '1px solid #f00'});
$(".container .component").each(function() {
if ($(".container", this).css('width') === "auto")
$(".container", this).css('border', '1px solid #f00');
});