Допустим, у меня есть эта разметка:
<ul id="wizard">
<li>Step 1</li>
<li>Step 2</li>
</ul>
И у меня есть этот JQuery:
$("#wizard li").click(function () {
// alert index of li relative to ul parent
});
Как я могу получить индекс ребенка по li
отношению к его родителю при нажатии на это li
?
Например, когда вы нажимаете «Шаг 1», alert
должно появиться «0».
javascript
jquery
AgileMeansDoAsLittleAsPossible
источник
источник
что-то вроде:
источник
Посмотрите на этот пример .
источник
Нет необходимости требовать большую библиотеку, такую как jQuery, если вы этого не хотите. Чтобы достичь этого с помощью встроенных манипуляций с DOM, получите коллекцию
li
братьев и сестер в массиве, и при щелчке отметьтеindexOf
элемент clicked в этом массиве.Или с делегированием события:
Или, если дочерние элементы могут изменяться динамически (как со списком задач), вам придется создавать массив
li
s при каждом щелчке, а не заранее:источник
Delegate и Live просты в использовании, но если у вас больше не будет динамически добавляться li: s, вы также можете использовать функцию delagation с обычным bind / click. При использовании этого метода должно быть некоторое повышение производительности, так как DOM не нужно отслеживать для новых соответствующих элементов. У меня нет реальных цифр, но это имеет смысл :)
Вы можете проверить это на jsFiddle: http://jsfiddle.net/jimmysv/4Sfdh/1/
источник
Еще один способ
Демо https://jsfiddle.net/m9xge3f5/
источник