2010-09-09 3 views
13

Sto cercando un modo in cui posso selezionare un elemento div che non è il diretto successivo a quello che è "selezionato" da una funzione click.Jquery Seleziona ulteriormente l'elemento 2 posizioni - un altro modo per .next(). Next()

<div id="click">(siblings)</div><div>text</div><div id="get this one"></div> 

Ora vorrei selezionare quello con l'id "ottenere questo" - nel mio codice questo ID non è disponibile. Tutti i div hanno la stessa classe e hanno fratelli.
Potrei selezionare il terzo da $(this).next().next() ma penso che non sia il modo migliore per farlo.
Inoltre ci possono essere div s prima di quello su cui si fa clic, quindi non è necessariamente il primo.

Ho provato il selettore :nth-child ma non ho trovato una soluzione.
Successivamente potrei anche voler selezionare il 13 dopo quello del clic (o il 23, il 65 e così via). Ciò significa che mi piacerebbe avere una soluzione piuttosto dinamica a questo problema.

Grazie per il vostro aiuto,
Phil

risposta

20

È possibile utilizzare .nextAll() con .eq() per il vostro approccio dinamico, in questo modo:

$(this).nextAll().eq(1) //0 based index, this would be .next().next() 

Ciò consentirebbe di ottenere n fratelli in avanti, che sembra essere essere ciò che stai cercando.

+0

Ok, ora mi sento un ideot. È così facile - e funziona, ovviamente. Ha molto senso che mi odio per non farlo funzionare da solo. Ma grazie mille :) – Phil

0

Sembra che $(this).parent().find('div').eq(2).attr('id') dovrebbe funzionare.

UPDATE (find Aggiunto ('div'))

+0

Ciò causerebbe sempre un insieme di elementi vuoto, '.parent()' seleziona un singolo elemento, non i fratelli :) –

+0

Prima, la tua risposta era nextAll ('eq: 2'). Funzionerebbe allo stesso modo di quello che hai per la tua risposta ora? Qual è la differenza? – d2burke

+0

@ d2burke - Stai ottenendo il terzo elemento nel genitore, non importa cosa ... questo non è relativo all'elemento * current *, ma ottiene solo il terzo, indipendentemente dal fatto che tu abbia fatto clic. Anche la mia risposta ha usato ': eq (1)' per il 2 °, è un indice a 0 :) –