Пример: http://jsfiddle.net/MAane/
Когда вы нажимаете любой из элементов списка, я подсчитываю, сколько из предыдущих элементов есть в указанном списке, но мне нужно иметь возможность подсчитывать все элементы li в DOM до того, как я нажал (так что, если я нажал элемент номер 2 во втором списке, предупреждение будет = 5)
$("ul li").click(function(){
var x=0;
$(this).prevAll("li").each(function() {
x++;
});
alert(x);
});
Возможно, я мог бы пройти через цикл parent(), prev() и т.д., Но считаю, что эти списки являются динамическими, поэтому я действительно не ищу исправление в этом примере как таковом, а что-то, что может реально сканировать любой DOM.
Вы можете использовать index()
для этого и проверить, где в коллекции элементов LI текущий клик:
$("ul li").on('click', function(){
var x = $("ul li").index(this);
alert(x);
});
Альтернативное решение:
$("ul").each(function () {
$(this).find('li').each(function (i, e) {
$(e).click(function () {
alert(i);
});
});
});