计算哪个子元素是一个元素

时间:2013-12-11 22:56:10

标签: javascript jquery numbers element

所以我在页面上有几张幻灯片,每张幻灯片都有一个菜单项。 如果单击menuitem#1,我想转到幻灯片#1,依此类推。 到目前为止没问题,但我不想为每个项目进行硬编码。

有没有办法计算点击了哪个#child元素? (最好是jQuery)

<nav id="mainNav">
    <ul>
        <li>
            <a href="#">Hello</a>
        </li>
        <li>
            <a href="#">World</a>
        </li>
        <li>
            <a href="#">Blaa</a>
        </li>
    </ul>
</nav>

3 个答案:

答案 0 :(得分:5)

由于您使用的是jQuery,因此可以使用index方法:

$('#mainNav a').click(function() {
    alert($(this).parent().index());
    return false;
});

或者,如果<a>可以任意嵌套,您可以使用以下内容:

$('#mainNav a').click(function() {
    alert($(this).closest('#mainNav > ul > li').index());
    return false;
});

demonstration

答案 1 :(得分:4)

既然你也标记了普通的,我会给你一个解决方案......

您可以像previousElementSibling)那样使用fiddle

function getElementIndex(elem) {
    var i = 0;
    while (elem = elem.previousElementSibling) i++;
    return i;
}

答案 2 :(得分:1)

这将使您的代码完全动态化。

<nav id="mainNav">
        <ul>
            <li>
                <a href="#" class="nav">Hello</a>
            </li>
            <li>
                <a href="#" class="nav">World</a>
            </li>
            <li>
                <a href="#" class="nav">Blaa</a>
            </li>
        </ul>
    </nav>


     <script>
        $(document).ready(function(){
        var navs = $('.nav');
        $.each(navs,function(index,value){
            $(navs[i]).attr('data-index',i);
            }
        $('.nav').click(function(){
            var nav_index = $(this).attr('data-index');
            //Do something with nav_index here
         });
});
</script>