2008-09-04 3 views
20

Un .container peut contenir beaucoup .components, et se .components peuvent contenir .containers (qui peut contenir .components etc., etc.)jQuery: Pouvez-vous sélectionner par la règle CSS, pas de classe?

de code donné comme ceci:

$(".container .component").each(function(){ 
    $(".container", this).css('border', '1px solid #f00'); 
}); 

Qu'est-ce que J'ai besoin d'ajouter à la ligne dans les accolades pour sélectionner uniquement les .containers imbriqués dont la largeur dans 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.

+0

Un grand merci pour vos réponses. J'aurais idéalement aimé inclure la règle CSS dans le sélecteur, de sorte que j'avais un groupe de tous les .conteneurs qui sont dans un .component qui ont une largeur CSS: auto, mais ça ne fait rien. –

Répondre

18
$(".container .component").each(function() 
{ 
    $(".container", this).each(function() { 
     if($(this).css('width') == 'auto') 
     { 
      $(this).css('border', '1px solid #f00'); 
     } 
    }); 
}); 

similaires à l'autre réponse, mais puisque les composants peuvent avoir plusieurs conteneurs, doit également l'.each() vérifier ici aussi pour la largeur.

4
$(".container .component").each(function() { 
    if ($(".container", this).css('width') === "auto") 
     $(".container", this).css('border', '1px solid #f00'); 
}); 
16

Vous pouvez regarder dans .filter().

Quelque chose comme:

$('.container .component .container') 
.filter(function() {return $(this).css('width') == 'auto';}) 
.css({border: '1px solid #f00'}); 
+0

c'est ce que je cherche, avec une seule ligne à réaliser. –

Questions connexes