如何在包装器元素中获取具有类名的当前元素的索引

时间:2014-08-06 09:50:19

标签: jquery html

这是html,

<div id="wraper">
    <div>
        <div class="test">1</div>
    </div>
    <div>
        <div class="test">2</div>
    </div>
    <div>
        <div class="test">3</div>
    </div>
    <div>
        <div class="test">4</div>
    </div>
    <div>
        <div class="test">5</div>
    </div>
</div>

$("#wraper").find(".test").eq(2);这将选择test内的第3个wraper课程。

我需要在点击eq() div时获取该索引(我已将其作为参数传递给.test

当我点击类名为test的div时,我需要在wraper div中获取该div的索引。

$(".test").click(function() {
    alert($(this).index());
});

此代码将始终返回0,因为test div具有父div。因此,如果我使用$(this).parent().index(),它将返回正确的索引。

还有其他替代方法吗?因为在我的真实场景中,可能有多个级别的父母。

Fiddle

2 个答案:

答案 0 :(得分:4)

您可以使用.index()的第3版,它根据调用.index()的元素集返回传递项的索引

var $tests = $(".test").click(function () {
    alert($tests.index(this));
});

演示:Fiddle

答案 1 :(得分:-1)

试试这个:

$(".test").click(function() {
    alert($(this).parent().index());
});

修改

对不起,我误解了这个问题。如果有多个级别的父级,并且您知道需要索引的顶级父级,则可以使用:

$(this).closest('.some-class').index()