Javascript 计算元素的哪个子元素是

Javascript 计算元素的哪个子元素是,javascript,jquery,numbers,element,Javascript,Jquery,Numbers,Element,因此,我在一页上有几个幻灯片,每个幻灯片都有一个菜单项。 如果单击菜单项1,我想转到幻灯片1,依此类推。 到目前为止没有问题,但我不想为每个项目硬编码 有没有办法计算单击了哪个子元素?(最好是jQuery) 由于您使用的是jQuery,因此可以使用以下方法: 或者,如果,这将使您的代码完全动态 <nav id="mainNav"> <ul> <li> <a href

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

有没有办法计算单击了哪个子元素?(最好是jQuery)



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


或者,如果

,这将使您的代码完全动态

<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>

$(文档).ready(函数(){ var-navs=$('.nav'); $。每个(导航、功能(索引、值){ $(navs[i]).attr(‘数据索引’,i); } $('.nav')。单击(函数(){ var nav_index=$(this.attr('data-index'); //在这里用nav_索引做些什么 }); });
既然您也标记了plain old,我将为您提供一个解决方案

您可以使用like so():


你的处理程序是什么样子的?看看
index()
方法看起来像index()正是我要搜索的。谢谢!index()和parent()的结合正是解决问题的方法。谢谢,伙计!@MichaelMikowski这是一个很好的建议。我已经将它纳入了我的答案中。
$('#mainNav a').click(function() {
    alert($(this).parent().index());
    return false;
});
$('#mainNav a').click(function() {
    alert($(this).closest('#mainNav > ul > li').index());
    return false;
});
<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>
function getElementIndex(elem) {
    var i = 0;
    while (elem = elem.previousElementSibling) i++;
    return i;
}