2012-05-30 17 views
7

Diciamo che ho una gerarchia di elementi, con #root alla radice. Posso usare $('#root > * > *') per ottenere tutti i suoi nipoti. C'è un modo per farlo se ho già $('#root')?Selettore per i nipoti, o come ancorare il selettore su un elemento noto

$('#root').find('* > *') non è sicuramente, poiché sarà felicemente "avviato" da qualsiasi discendente per la prima stella, non solo da #root bambini.

Esiste qualche funzione in jQuery che "si ancorhi" all'elemento corrente, a partire dai suoi figli o da solo? Mi ha infastidito per un po 'e non ho trovato nulla di simile nei documenti.

+0

'.find() 'è probabilmente il metodo di traversal jQuery più fastidioso di sempre. – BoltClock

risposta

13

O avviare l'espressione trovare con un altro > (questa sintassi è documented):

// This is functionally the same as $('#root > * > *') 
$('#root').find('> * > *') 

Oppure chiamare .children() due volte: una per i suoi figli e di nuovo per i suoi nipoti:

$('#root').children().children() 
+0

Sì, sapevo della cosa '.children()', ma ... beh, non va bene per quello che sto facendo, volevo davvero la cosa del selettore. E la cosa del selettore ... wow, non ho mai pensato di provarlo, è fantastico. Qualche idea di quanto sia solida? Sono un po 'preoccupato che non sia documentato - funziona ora, ma per quanto tempo? – Amadan

+0

@Amadan: Non ne ho idea ... sembra che abbia funzionato da un po 'di tempo. – BoltClock

+0

Ho aggiornato questo post per riflettere che questa funzionalità è ora documentata. – JDB