2017-03-09 65 views
0

我试图在达到某个滚动位置时在页面上向下滚动。当用户向下滚动一点(100px)时,jquery应该向下滚动。Jquery在滚动位置后滚动下来

$(window).on('scroll', function() { 
     var scrollPos = $(this).scrollTop(); 
     if (scrollPos >= 100) { 
      $('html, body').animate({ scrollTop: 300 }, 50); 
     } 
    }); 

的代码滚动,但得到的卡在滚动位置300。什么是不卡住的好方法?

回答

2

因为在每一个下一个滚动中,scrollPos >= 100总是如此。你必须检查它是否是经过100

您可以在此fiddle

// just rename it to anything you want 
var hasBeenOver100Before = false; 

$(window).on('scroll', function(e) { 
    var scrollPos = $(this).scrollTop(); 
    if (scrollPos >= 100 && !hasBeenOver100Before) { 
     // so that on next scroll, code knows this part already executed 
     hasBeenOver100Before = true; 
     $('html, body').animate({ scrollTop: 300 }, 50); 
    } 

    // reset it to false, so that next time user passes to 
    // 100 scrolltop, the code above works again 
    if (scrollPos <= 100) hasBeenOver100Before = false; 
}); 
在行动中看到下面的代码第一次用户
0

Becouse始终scrollPos>> = 100 ...
scrollPos> = 100?是的,将它滚动到300,scrollPos> = 100?是的,将它滚动到300,是...