Jquery 单击导航点,它不会将类设置为活动

Jquery 单击导航点,它不会将类设置为活动,jquery,Jquery,$('a[href^=“#“]”)。在('click',函数(evt)上{ var target=$($(this.attr('href')); log('target=>'+target); if(目标长度){ evt.preventDefault(); $('html,body')。设置动画( {scrollTop:target.offset().top},1000); $('a[href^=“#“]”)。removeClass('active'); $(this.addClass('act

$('a[href^=“#“]”)。在('click',函数(evt)上{
var target=$($(this.attr('href'));
log('target=>'+target);
if(目标长度){
evt.preventDefault();
$('html,body')。设置动画(
{scrollTop:target.offset().top},1000);
$('a[href^=“#“]”)。removeClass('active');
$(this.addClass('active');
}
});
$(窗口)。滚动(函数(){
var windscroll=$(window.scrollTop();
如果(风蚀>=20){
$('.section')。每个(函数(i){

如果($(this).position().top由于您的检查,第二个点设置不正确

if ($(this).position().top <= windscroll - 5) {...

if($(this).position().top它似乎调用了两次,每个按钮调用一次

   $('.section').each(function(i) {
          if ($(this).position().top <= windscroll - 5) {
              console.log('top ' + $(this).position().top);
          }
      });

    <li><a href="#1" class="tooltip-left active" data-tooltip="Test 1"></a></li>
    <li><a href="#2" class="tooltip-left" data-tooltip="Test 2"></a></li>
$('.section')。每个(函数(i){

如果($(this).position().top我认为问题在于卷轴没有到达您的第二节位置,因为卷轴已经到达页面的底部,您可以先检查它。还要注意@Stoyan Dekov说的话

我已更新您的:

var偏移=20;
$('a[href^=“#“]”)。关于('click',函数(evt){
var target=$($(this.attr('href'));
if(目标长度){
evt.preventDefault();
$('html,body')。设置动画(
{scrollTop:target.offset().top},1000);
}
});
$(窗口)。滚动(函数(){
var windscroll=$(window.scrollTop();
如果(风切变>=偏移){
$('.scrolling navigation').fadeIn();
如果(windscroll+$(窗口).height()==$(文档).height()){
$('.scrolling navigation li a.active').removeClass('active');
$('.scrolling navigation li a').eq(1).addClass('active');
}
否则{
$('.section')。每个(函数(i){
log('top'+$(this.position().top));

如果($(this).position().top)这对我不起作用,它根本不会改变活动状态。我认为问题在于$(this).position().top,而不是-5。问题是滚动到达页面底部,到顶部的偏移量永远不够。如果在最后添加大量

,它会起作用(但这不是问题的解决方案)他的代码只在每个
页面的高度大于(>=)的情况下才起作用屏幕高度。您可以在页面底部添加一些

,以查看它的工作情况,而无需到达页面底部。非常感谢您的解释,我试图修改代码,但当单击最后第5部分时,它将不会显示active(活动):(.hmm.哪一个第5部分?提供的Fiddle ypu仅包含2个部分?Fiddle 2部分是的,但我添加了超过2个部分以进行更多测试。单击每个点滚动到正确的部分,但点未设置为活动,除非之前的点仍设置为活动。这很奇怪。你应该更新你的问题,因为现在它是我的和原来的不同,你考虑过用吗?
   $('.section').each(function(i) {
          if ($(this).position().top <= windscroll - 5) {
              console.log('top ' + $(this).position().top);
          }
      });

    <li><a href="#1" class="tooltip-left active" data-tooltip="Test 1"></a></li>
    <li><a href="#2" class="tooltip-left" data-tooltip="Test 2"></a></li>
var offset = 20;

$('a[href^="#"]').on('click', function(evt){
    var target = $($(this).attr('href'));
    if(target.length){
        evt.preventDefault();
        $('html, body').animate(
            {scrollTop: target.offset().top}, 1000);
    }
});

$(window).scroll(function() {
    var windscroll = $(window).scrollTop();
    if (windscroll >= offset) {
        $('.scrolling-navigation').fadeIn();
        if(windscroll + $(window).height() == $(document).height()){
            $('.scrolling-navigation li a.active').removeClass('active');
            $('.scrolling-navigation li a').eq(1).addClass('active');
        }
        else{
            $('.section').each(function(i) {
                console.log('top ' + $(this).position().top);
                if ($(this).position().top <= windscroll) {
                    $('.scrolling-navigation li a.active').removeClass('active');
                    $('.scrolling-navigation li a').eq(i).addClass('active');
                }
            });
        }

    } else {
        $('.scrolling-navigation').fadeOut();
        $('.scrolling-navigation li a.active').removeClass('active');
        $('.scrolling-navigation li a:first').addClass('active');
    }

}).scroll();