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

come si trova il div interno qui?classe jQuery all'interno del selettore di classe

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

è solo andare a cercare un div con class="outer inner", è corretto?

così ho provato

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

ma che non sembrano funzionare.

Edit:

So che la sua facile da trovare con qualcosa di simile a

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

ma sto cercando per il tipo di sintassi di selezione singola che legge meglio imho.

+0

Come viene definito '$ container'? Oltre a ciò, dovrebbe utilizzare singoli selettori quando possibile. È molto più semplice da leggere se non devi cercare le diverse parti del selettore ovunque. – jwueller

+0

"ma sto cercando il tipo di sintassi a selettore singolo che legge meglio imho." Dovresti preferire il metodo '.find (...)' perché sarà più veloce più il tuo selezionatore diventa complesso o se usi un selettore che non è supportato dal browser. In questo caso, per la selezione verrà utilizzato lo sizzle che è/potrebbe essere molto lento rispetto a un selettore con la divisione con '.find (...)'. – Andreas

risposta

58

è solo andare a cercare un div con class = "esterno interno", è corretto?

No, '.outer .inner' cercherà tutti gli elementi con la classe .inner che hanno anche un elemento con la classe Outer come antenato. '.outer.inner' (senza spazio) darebbe i risultati a cui stai pensando.

'.outer > .inner' cercherà figli immediati di un elemento con il Outer classe per gli elementi con la classe .inner.

Entrambi '.outer .inner' e '.outer > .inner' dovrebbero funzionare per il tuo esempio, anche se i selettori sono fondamentalmente diversi e dovresti diffidare di questo.

+1

Ho avuto un altro errore nel mio codice che mi ha portato a pensare che il mio selettore non funzionasse, ma dopotutto. Grazie per la spiegazione. – fearofawhackplanet

25

Per questo html:

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

Questo selettore dovrebbe funzionare:

$('.outer > .inner') 
Problemi correlati