2010-09-22 4 views
27
<div class="outer"> 
    <div class="inner"></div> 
</div> 

Comment trouver la division interne ici?Classe jQuery dans le sélecteur de classes

$container.find('.outer .inner')

est juste aller chercher un div avec class="outer inner", est-ce exact?

donc j'ai essayé

$container.find('.outer > .inner')

mais cela ne semble pas fonctionner.

Edit:

Je sais facile de trouver quelque chose comme

$container.find('.outer').find('.inner')

mais je suis à la recherche pour le type de syntaxe unique de sélection qui se lit mieux IMHO.

+0

Comment '$ container' est-il défini? En outre, vous devriez utiliser des sélecteurs uniques chaque fois que possible. Il est beaucoup plus facile à lire si vous n'avez pas besoin de chercher les différentes parties du sélecteur partout. – jwueller

+0

"mais je cherche le genre de syntaxe de sélecteur unique qui se lit mieux imho." Vous devriez préférer la méthode '.find (...)' car elle sera plus rapide si votre sélecteur est plus complexe ou si vous utilisez un sélecteur qui n'est pas supporté par le navigateur. Dans ce cas sizzle sera utilisé pour la sélection qui est/pourrait être vraiment lent par rapport à un sélecteur fractionné avec '.find (...)'. – Andreas

Répondre

58

va tout simplement chercher un div class = "intérieure extérieure", est-ce exact?

Non, '.outer .inner' recherchera tous les éléments avec le .inner classe qui ont également un élément avec la classe comme un ancêtre .outer. '.outer.inner' (sans espace) donnerait les résultats auxquels vous songez.

'.outer > .inner' recherchera les enfants immédiats d'un élément avec le .outer classe pour les éléments avec la classe .inner.

Les deux '.outer .inner' et '.outer > .inner' devraient fonctionner pour votre exemple, bien que les sélecteurs soient fondamentalement différents et vous devriez vous en méfier.

+1

J'ai eu une autre erreur dans mon code qui m'a amené à penser que mon sélecteur ne fonctionnait pas, mais c'était après tout. Merci pour l'explication. – fearofawhackplanet

25

Pour cette html:

<div class="outer"> 
    <div class="inner"></div> 
</div> 

Ce sélecteur devrait fonctionner:

$('.outer > .inner')