Jquery如果滚动是一定数量的像素

Rya*_*yan 26 jquery scroll

是否有内置的jQuery函数来确定滚动的长度?

我正在尝试编写一个函数,如果用户从顶部滚动了50个像素,它将为div添加一个类.

所以代码看起来像这样:

if(userHasScrolled) {
     $('#myDiv').addClass('hasScrolled');

}
Run Code Online (Sandbox Code Playgroud)

Mat*_*ens 51

您可以检查$(document).scrollTop()滚动处理程序的内部:

var $document = $(document),
    $element = $('#some-element'),
    className = 'hasScrolled';

$document.scroll(function() {
  if ($document.scrollTop() >= 50) {
    // user scrolled 50 pixels or more;
    // do stuff
    $element.addClass(className);
  } else {
    $element.removeClass(className);
  }
});
Run Code Online (Sandbox Code Playgroud)

如果您想要添加类名称(不需要其他操作),则可以缩短为:

var $document = $(document),
    $element = $('#some-element'),
    className = 'hasScrolled';

$document.scroll(function() {
  $element.toggleClass(className, $document.scrollTop() >= 50);
});
Run Code Online (Sandbox Code Playgroud)

请参见http://api.jquery.com/scrollTop/.

请注意,使用scroll事件处理程序效率非常低.

  • 在这种情况下,我喜欢使用[`toggleClass`](http://api.jquery.com/toggleClass/)方法来简洁:`$ element.toggleClass(className,$ document.scrollTop()> = 50); ` (5认同)
  • @Geert如果您想要添加类名,那确实是最优雅的解决方案! (2认同)