如何使滚动不一直获取,而是数值变动再获取一次?

0 0 jquery
背着98K的男人
背着98K的男人

声望值:306 0人

2019-02-25 14:30:10 提问

关注 0关注

收藏 0收藏, 102浏览

代码如下

document.addEventListener('scroll', function () {
    var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
    $('.article-content ul li').each(function(){
        var topset = $(this).offset().top;
        if(scrollTop >= topset){
            $('.item ul li').eq(topindex).addClass('cur').siblings().removeClass('cur');
        }
    });
});

作用:当页面滚动到$('.article-content ul li')时,为左侧列表对应的li添加cur。上面的方法可以实现,我的问题是,我F12查看切换时,发现$('.item ul li')所有的li都在类似刷新的高亮状态。我估摸着是不是滚动因为数值在变导致的一直添加删除class,所以请问该如何解决这一问题?还望能够给予帮助,非常感谢!~

请先 登录 后评论

2个回答

  • 独孤马特i58声望 2018-09-25 09:26

    因为你一直再siblings()使兄弟元素都在一直处于addClass('cur')或 removeClass('cur')的状态 var $prev=null; document.addEventListener('scroll', function () { var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; $('.article-content ul li').each(function(){ var topset = $(this).offset().top; if(scrollTop >= topset){ var $now=$('.item ul li').eq(topindex); if($prev!==$now){ if($prev){ $prev.removeClass('cur'); } $prev=$now.addClass('cur'); } } }); });
    请先 登录 后评论
  • HotSmoking90声望 2018-09-25 09:31

    document.addEventListener('scroll', function () { var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; $('.article-content ul li').each(function(){ var topset = $(this).offset().top; if(scrollTop >= topset && !$('.item ul li').eq(topindex).hasClass("cur")){ $('.item ul li').eq(topindex).addClass('cur').siblings().removeClass('cur'); } }); });
    请先 登录 后评论

注册新账号

悬赏追问
10
  • 10
  • 20
  • 50
  • 100
  • 200
  • 输入数值
发布追问