Angenommen, ich habe dieses Markup:
<ul id="wizard">
<li>Step 1</li>
<li>Step 2</li>
</ul>
Und ich habe diese jQuery:
$("#wizard li").click(function () {
// alert index of li relative to ul parent
});
Wie kann ich den Index des Kindes li
relativ zum Elternteil erhalten, wenn ich darauf klicke li
?
Wenn Sie beispielsweise auf "Schritt 1" klicken, sollte ein alert
mit "0" angezeigt werden.
javascript
jquery
AgileMeansDoAsLittleAsPossible
quelle
quelle
etwas wie:
quelle
Schauen Sie sich dieses Beispiel an .
quelle
Es ist nicht erforderlich, eine große Bibliothek wie jQuery zu benötigen, um dies zu erreichen, wenn Sie dies nicht möchten. Um dies mit der integrierten DOM-Manipulation zu erreichen, rufen Sie eine Sammlung der
li
Geschwister in einem Array ab und überprüfen Sie beim KlickenindexOf
das angeklickte Element in diesem Array.Oder mit Veranstaltungsdelegation:
Wenn sich die untergeordneten Elemente dynamisch ändern (wie bei einer Aufgabenliste), müssen Sie das Array von
li
s bei jedem Klick erstellen und nicht vorher:quelle
Delegate und Live sind einfach zu verwenden, aber wenn Sie keine dynamischen Li: s mehr hinzufügen möchten, können Sie die Ereignisverzögerung auch mit normalem Binden / Klicken verwenden. Mit dieser Methode sollte ein gewisser Leistungsgewinn erzielt werden, da das DOM nicht auf neue übereinstimmende Elemente überwacht werden muss. Ich habe keine tatsächlichen Zahlen, aber es macht Sinn :)
Sie können es unter jsFiddle testen: http://jsfiddle.net/jimmysv/4Sfdh/1/
quelle
Noch ein anderer Weg
Demo https://jsfiddle.net/m9xge3f5/
quelle