0

示例:http: //jsfiddle.net/MAane/

单击任何列表项时,我正在计算所述列表中有多少先前的元素,但我需要能够计算 DOM 中在我单击的项之前的所有 li 项(因此,如果我单击项第二个列表中的第 2 位,警报将是 =5)

$("ul li").click(function(){
    var x=0;
    $(this).prevAll("li").each(function() {
       x++;
    });
    alert(x);
});

我可能会经历 parent()、prev() 等的循环,但考虑到这些列表是动态的 - 所以我并不是真的在寻找这个例子本身的修复,但实际上可以爬上去的东西任何 DOM。

4

2 回答 2

6

您可以使用index()它,并检查当前单击的 LI 元素集合中的位置:

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

小提琴

于 2013-09-20T16:30:24.087 回答
0

另一种解决方案:

$("ul").each(function () {
    $(this).find('li').each(function (i, e) {
        $(e).click(function () {
            alert(i);
        });
    });
});
于 2013-09-20T16:35:07.210 回答