0

我现在正在建立一个微型网站,但我遇到了问题。我想通过单击我的菜单滚动到不同的列表元素。这工作正常。但问题是,通过使用列表索引遍历 mainmenu 的第二个或第三个元素,它只能在第一个菜单中正常工作,因为第二个菜单的索引通过添加到第一个菜单以 3 开头。错误的电话也是如此.mainmenu.children,但我不知道正确的电话。

所以问题是,我怎样才能只通过他的父菜单选择一个列表索引?我不想使用三个不同的 ID,因为菜单应该是动态的。

希望有人可以帮助我。

最好的祝福

h-man24

$('.mainmenu').children('li').click(function(){     
    var myIndex = $('.mainmenu li').index(this);
    alert(myIndex + "  " + myPosition);
    var myPosition = $('#page > li').eq(myIndex).offset().top;
    $('html, body').animate({scrollTop:myPosition, duration:500, easing:'easeInOutCirc'});  
});

HTML:

<ul>
<li>
    <div>
    <ul class="mainmenu">
    <li>Link to 1</li> (index 0)
    <li>Link to 2</li> (index 1)
    <li>Link to 3</li> (index 2)
    </ul>
    <div>Content 1></div>
    </div>
</li>
<li>
    <div>
    <ul class="mainmenu">
    <li>Link to 1</li> (index 3, should be 0)
    <li>Link to 2</li> (index 4, should be 1)
    <li>Link to 3</li> ....
    </ul>
    <div>Content 2></div>
    </div>
</li>
<li>
    <div>
    <ul class="mainmenu"> 
    <li>Link to 1</li>
    <li>Link to 2</li>
    <li>Link to 3</li>
    </ul>
    <div>Content 3></div>
    </div>
</li>
4

1 回答 1

2

怎么样:

$('.mainmenu li').click(function(){

    var myIndex = $(this).closest('.mainmenu').children('li').index(this);
    alert(myIndex + "  " + myPosition);
    var myPosition = $('#page > li').eq(myIndex).offset().top;
    $('html, body').animate({scrollTop:myPosition, duration:500, easing:'easeInOutCirc'});      
    });
于 2009-09-13T08:51:51.270 回答