如何使用jQuery实现导航栏

时间:2013-10-11 10:24:54

标签: javascript jquery

我正在尝试使用jQuery实现导航栏导航。但没有运气!请查看this fiddle

我的要求是根据滚动的内容激活菜单项,并根据单击的菜单项滚动内容。以下是代码

$('.menu-item').on('click', function () {
    var that = $(this);
    $('.menu-item').each(function () {
        $(this).removeClass('active');
    });
    that.addClass('active');
    var index = that.index();
    var target = $('.menu .menu-target').eq(index);
    $('.right').animate({
        scrollTop: target.offset().top
    }, 500);
});

$('.right').on('scroll', function () {
    var scrTop = $(this).scrollTop(),
        tgt = "";
    $('.menu-target').each(function () {
        var th = $(this),
            offTop = th.offset().top;
        if (offTop > scrTop && && tgt === "") {
            tgt = th;
        }
    });

    if (tgt !== "") {
        var index = tgt.index();
        $('.menu-item').each(function () {
            $(this).removeClass('active');
        });
        $('.menu-item').eq(index).addClass('active');
    }
});

但这不起作用。滚动时更新活动菜单项无效。如何解决这个问题?

修改的 试图解决问题,这里是代码http://jsfiddle.net/SfR2c/11/ 它正在处理基于滚动内容更新菜单元素的一些不一致!

2 个答案:

答案 0 :(得分:1)

替换此

 var target = $('.menu .menu-target').eq(index);

由此

 var target = $('.right .menu-target').eq(index);

答案 1 :(得分:-3)

已经有了满足您需求的可行解决方案。编程时,请尽可能重复使用。

解决方案是使用Bootstrap from twitter ScrollSpy