Powiedzmy, że mam ten znacznik:
<ul id="wizard">
<li>Step 1</li>
<li>Step 2</li>
</ul>
Mam to jQuery:
$("#wizard li").click(function () {
// alert index of li relative to ul parent
});
Jak mogę uzyskać indeks dziecka li
względem jego rodzica, klikając to li
?
Na przykład po kliknięciu „Krok 1 alert
” powinna pojawić się cyfra „0”.
javascript
jquery
AgileMeansDoAsLittleAsPossible
źródło
źródło
coś jak:
źródło
Spójrz na ten przykład .
źródło
Jeśli nie chcesz, nie potrzebujesz do tego dużej biblioteki, takiej jak jQuery. Aby to osiągnąć dzięki wbudowanej manipulacji DOM, pobierz kolekcję
li
rodzeństwa w tablicy i po kliknięciu sprawdźindexOf
kliknięty element w tej tablicy.Lub w przypadku delegowania wydarzenia:
Lub, jeśli elementy potomne mogą zmieniać się dynamicznie (jak w przypadku listy rzeczy do zrobienia), będziesz musiał utworzyć tablicę
li
s przy każdym kliknięciu, a nie wcześniej:źródło
Delegate i Live są łatwe w użyciu, ale jeśli nie będziesz mieć więcej dynamicznie dodawanych li:, możesz również użyć funkcji opóźniania zdarzeń z normalnym połączeniem / kliknięciem. Ta metoda powinna przynieść pewien wzrost wydajności, ponieważ DOM nie będzie musiał być monitorowany pod kątem nowych pasujących elementów. Nie mam żadnych faktycznych liczb, ale ma to sens :)
Możesz to przetestować na jsFiddle: http://jsfiddle.net/jimmysv/4Sfdh/1/
źródło
Jeszcze inny sposób
Demo https://jsfiddle.net/m9xge3f5/
źródło