Wählen Nth vorherigen Geschwister in jQuery?
-
06-07-2019 - |
Frage
Ich versuche, meinen jQuery-Selektor einzurichten, aber ich bin mir nicht ganz sicher, wie ich brauche, es zu schreiben.
Ich habe eine ungeordnete Liste bekommt, die etwa wie folgt aussieht:
<ul>
<li>something</li>
<li>something</li>
<li>something</li>
<li>something</li>
<li class="last">something</li>
</ul>
Jetzt weiß ich, wenn ich das letzte Kind wählenden ich tun kann, dass durch die Verwendung entweder „ul li.last“ oder „ul.li:last“ aber sagen, wenn ich die zweite von den letzten wollte, oder dritte oder 20 ? Jetzt würde ich das tun?
Lösung
Sie verwenden eq
:
$('ul li').eq(X);
Wenn X ein 0-basierter Index von dem Element, das Sie möchten. Sie könnten auch die Selektor Form verwenden:
$('ul li:eq(X)');
Und man kann auch ein ähnliches Ergebnis unter Verwendung von nth-child
erreichen
$('ul li:nth-child(X)');
Die Dokumentation hat dies über den Unterschied zwischen nth-child
und eq
zu sagen:
Während: eq (Index) paßt nur ein einziges Element, entspricht dies mehr als ein: Ein für jeden Elternteil mit dem Index. Mehrere für jeden Elternteil mit gerade, ungerade oder Gleichung. Der angegebene Index ist ein indiziert, im Gegensatz zu:. Eq (), die bei Null beginnt
So von $('ul li').eq(19);
tun Sie das Einzel 20. verglichene Element der Abfrage erhalten würde (also, wenn es mehr als eine Liste in dem Dokument ist, wird dies erhalten Sie nicht „alle 19. Kinder“, während $('ul li:nth-child(20)');
würden Sie die einzelnen 20. bekommen abgestimmt Listenelement jeden <ul>
im Dokument.
Bearbeiten :
so etwas wie zu tun "second to liest", die vernünftige Art und Weise, es zu tun wäre wie:
var $ul = $('#mylist > li');
var $el = $ul.eq($ul.length-2);
Sie sollten aber wahrscheinlich einen Scheck tun, um sicherzustellen, Länge-2 nicht kleiner als 0 ist.
Andere Tipps
Wollen Sie die dritte von den letzten?
var $ul = $("ul li");
$ul.find(":eq(" + Math.max(0, $ul.length - 3) + ")");
Kurze Erläuterung: Die Länge von $ ul (das ist ein jQuery-Objekt ist) ist, wie viele li gefunden werden. So können Sie verwenden, zusammen mit dem „: eq (n)“. Wähler den li auf dem gewünschten Index zu erhalten
Ich habe Math.max falls die Liste zu kurz (weniger als 3 li).
Dies wird auch funktionieren, aber es ist offensichtlich nicht der beste Weg:
var $ul = $("ul li:last").prev().prev();
Für dritte und zwanzigsten können Sie ul li:eq(3)
und ul li:eq(20)
tun. Für Sekunden dauern, könnten Sie in der Lage sein, etwas zu tun mit nth-child
's equation
Argumente Option, obwohl ich bin mir nicht sicher.
alert($('ul li').eq(3).text());
Das wird den Text des dritten Listenelement aufmerksam zu machen.
Das jQuery-Team hinzugefügt, um diese Funktion in Version 1.9
Sie können darüber lesen unter http://api.jquery.com/nth -letzte-Kind-Selektor /