Wie bekomme ich ein untergeordnetes Element nach Index in Jquery?

72
<div class="second">
    <div class="selector" id="selFirst"></div>
    <div class="selector" id="selSecond"></div>
    <div></div>
</div>

Wie bekomme ich #selFirst mit dem Elementindex, nicht mit der ID?

diese:

var $selFirst = $(".second:nth-child(1)");
console.log($selFirst);

kehrt zurück:

jQuery(div.second)
Davor Zubak
quelle

Antworten:

193

Wenn Sie das untergeordnete Element kennen, an dem Sie interessiert sind, ist es das erste:

 $('.second').children().first();

Oder nach Index zu finden:

 var index = 0
 $('.second').children().eq(index);
Rich O'Kelly
quelle
5
Achtung: eq () ist 0-indexiert, index () ist 1-indiziert.
Blattlaus
2
Die Frage ist allgemeiner. Auswahl nach Index. Es geht nicht darum, wie man das erste Kind auswählt.
Alexander Volkov
@ AlexanderVolkov beachten Sie das zweite Beispiel, das den Index verwendet
Rich O'Kelly
17

Es gibt folgende Möglichkeiten, um das erste Kind auszuwählen

1) $ ('. Second div: first-child')
2) $ ('. Second *: first-child')
3) $ ('div: erstes Kind', '.sekste')
4) $ ('*: erstes Kind', '.sekste')
5) $ ('. Zweiter Teil: n-tes Kind (1)')
6) $ ('. Second'). Children (). First ()
7) $ ('. Second'). Children (). Gl. (0)
Deepak Kumar
quelle
Je mehr Auswahlmöglichkeiten Sie haben, desto mehr Upvotes erhalten Sie!
Sarsaparilla
2
Die Frage ist allgemeiner. Auswahl nach Index. Es geht nicht darum, wie man das erste Kind auswählt.
Alexander Volkov
4

Sie können das erste Element über die Indexauswahl erhalten:

$('div.second div:eq(0)')

Code: http://jsfiddle.net/RX46D/

Samich
quelle
1
Indexselektoren sind schlecht. Verwenden Sie stattdessen Methoden, sie sind schneller
Raynos
2
$('.second').find('div:first')
mbx-mbx
quelle
1

Gibt das n-te Kind nicht eher Geschwister als Kinder zurück?

var $selFirst = $(".second:nth-child(1)");

gibt das erste Element mit der Klasse '.second' zurück.

var $selFirst = $(".selector:nth-child(1)");

sollte Ihnen das erste Geschwister der Klasse '.selector' geben

unästhetisch
quelle
-7

var node = document.getElementsByClassName("second")[0].firstElementChild

Haftungsausschluss: Browser-Konformität aktiviertgetElementsByClassName und firstElementChildwackelig. DOM-Shims beheben diese Probleme.

Raynos
quelle
Beachten Sie, dass wenn das OP nach dem ersten DIV sucht, dies nicht funktioniert, wenn HTML-Elemente zwischen .second und #selFirst vorhanden sind.
mbx-mbx
Wo hat er "first DIV" gesagt? Wo hat er gesagt "es wird Elemente zwischen .second und #selFirst geben"
Raynos