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?

War es hilfreich?

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 /

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top