Подсчет всех предыдущих вхождений класса в DOM

0

Пример: 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.

Теги:

2 ответа

6
Лучший ответ

Вы можете использовать index() для этого и проверить, где в коллекции элементов LI текущий клик:

$("ul li").on('click', function(){
    var x = $("ul li").index(this);
    alert(x);
});

FIDDLE

0

Альтернативное решение:

$("ul").each(function () {
    $(this).find('li').each(function (i, e) {
        $(e).click(function () {
            alert(i);
        });
    });
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню