javascript - 事件 anchor 链接在滚动/单击时未在固定导航上正确设置

标签 javascript jquery html css

我正在添加和删除事件 anchor 链接的类(颜色:红色)。问题是类(class)没有根据部分一致地添加,我似乎没有弄清楚这一点。

当相应的部分始终位于页面顶部时,如何修改我的代码,使 anchor 链接“突出显示”?

这是我的代码:

    // for secondary nav
 var topRange      = 200,  // measure from the top of the viewport to X pixels down
     edgeMargin    = 20,   // margin above the top or margin from the end of the page
     contentTop = [];

 // Set up content an array of locations for secondary nav
 $('.overlay-box').find('a').each(function(){
    var href = $(this).attr('href');
    var name = href.substr(href.lastIndexOf('#')+1);
    contentTop.push( $('[name="' + name + '"]').offset().top );
 });

// adjust secondary nav on scroll
$(window).scroll(function(){
  var winTop = $(window).scrollTop(),
      bodyHt = $(document).height(),
      vpHt = $(window).height() + edgeMargin;  // viewport height + margin
  $.each( contentTop, function(i,loc){
   if ( ( loc > winTop - edgeMargin && ( loc < winTop + topRange || ( winTop + vpHt ) >= bodyHt ) ) ){
    $('.nav-bar li')
     .removeClass('anchor-selected')
     .eq(i).addClass('anchor-selected');
   }
  });
});

这是网站:

http://www.icontrol.com/what-we-do/platform-services/

最佳答案

我看不出你是怎么做到的。

我整理了一个 jsfiddle 来实现你想要做的事情

希望它是你需要的:-)

http://jsfiddle.net/66ZbB/

$(document).ready(function() {
$('a').click(function() {
    $('a').removeClass('anchor-selected');
    var obj = $(this);
    $('html, body').animate({
        scrollTop: obj.offset().top
    }, 1000, function () {
        obj.addClass('anchor-selected');
    });
});
$(window).scroll(function() {
    $('a').removeClass('anchor-selected');
    //alert($(window).scrollTop() +":");
    $('a').each(function() {
        console.log($(this).offset.top);
        if (($(window).scrollTop() <= ($(this).offset().top)) && ($(window).scrollTop() > ($(this).offset().top - 20))) {
            $(this).addClass('anchor-selected');
        }
    });
});
});

关于javascript - 事件 anchor 链接在滚动/单击时未在固定导航上正确设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25045609/

相关文章:

Javascript - 用前 2 个空格拆分字符串

javascript - 如何将单选按钮名称列表传递给 spring Controller 并将它们显示到成功页面

jquery - 将 JSON 数据发送到 WebMethod

html - 如何链接到 Google Chrome 扩展程序的本地镜像?

javascript - 如何使用Javascript函数修改onKeyDown事件

javascript - jwplayer - 未捕获的类型错误 : Object #<Object> has no method 'setup'

javascript - 强制下载文件而不是在浏览器中显示

javascript - 在视频时间更新时操纵动态创建的内容

JavaScript/JQuery 音频播放器 "Next"

javascript - 如何从此 XRayWrapper 获取内容?