2010-09-09 7 views
13

Ich suche nach einem Weg, wie ich ein div-Element auswählen könnte, das nicht direkt neben dem ist, das von "ausgewählt" wird eine Klickfunktion.Jquery Wähle Element 2 Positionen weiter - ein anderer Weg zu .Next(). Next()

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

Nun möchte Ich mag die eine mit der ID „erhalten diese eine“ wählen - in meinem Code Diese ID ist nicht verfügbar. Alle Divs haben die gleiche Klasse und haben Geschwister.
Ich könnte die dritte von $(this).next().next() auswählen, aber ich denke, es ist nicht der beste Weg, es zu tun.
Auch kann es div s vor dem einen sein, der angeklickt wird - so ist es nicht unbedingt der erste.

Ich habe versucht, die :nth-child Selektor, fand aber keine Lösung.
Später möchte ich vielleicht auch den 13. nach dem Klick auswählen (oder der 23., 65. usw.). Dies bedeutet, dass ich eine eher dynamische Lösung für dieses Problem hätte.

Danke für Ihre Hilfe,
Phil

Antwort

20

Sie können .nextAll() mit .eq() für Ihre dynamischen Ansatz wie folgt verwenden:

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

Diese Sie n Geschwister erlauben würde, nach vorn zu kommen, die scheint zu sein, wonach Sie suchen.

+0

Ok, jetzt fühle ich mich wie ein Ideal. Es ist so einfach - und es funktioniert natürlich. Es macht so viel Sinn, dass ich mich hasse, dass ich es nicht alleine habe. Aber vielen Dank :) – Phil

0

Es scheint, dass $(this).parent().find('div').eq(2).attr('id') funktionieren sollte.

UPDATE (Hinzugefügt find ('div'))

+0

Dies würde immer zu einem leeren Elementsatz führen, '.parent()' wählt ein einzelnes Element, nicht Geschwister :) –

+0

Zuvor hatte Ihre Antwort nextAll ('eq: 2'). Würde das genauso funktionieren wie das, was Sie jetzt für Ihre Antwort haben? Was ist der Unterschied? – d2burke

+0

@ d2burke - Sie erhalten das dritte Element im Elternteil, egal was ... das ist nicht relativ zum * aktuellen * Element, es wird nur das dritte Element angezeigt, egal, auf welches Sie geklickt haben. Auch meine Antwort verwendet ': eq (1)' für den 2., es ist ein 0-basierter Index :) –