Jquery, scrollTop == 过度滚动?
Jquery, scrollTop == overscrolled?
我想在 $(window).scrollTop == 500
时开始一个活动。如果我滚动缓慢,它会起作用,但如果我快速滚动,什么也不会发生。你有什么想法可以解决我的问题吗?
谢谢。
当 scroll
事件针对元素滚动经过的每个像素触发时,就会发生这种情况。这可能意味着事件处理程序在一秒钟内被触发数百次,因此浏览器将 'skip' 根据 UI 线程的滴答率处理其中一些事件。
这意味着它可能只在滚动时检测某些 scrollTop 值,因此 scrollTop
可能只在 480
、499
、522
处读取,给定您的代码样本。因此,即使用户滚动超过 500 像素,您对 == 500
的测试也不会命中。滚动速度变慢会减弱这种效果,因此它对你有用。
解决这个问题的方法是通过检查一系列 scrollTop 值来使您的代码更健壮,例如在您的示例中使用 >
而不是 =
:
if ($(window).scrollTop >= 500) {
console.log('You have scrolled down over 500px');
}
我想在 $(window).scrollTop == 500
时开始一个活动。如果我滚动缓慢,它会起作用,但如果我快速滚动,什么也不会发生。你有什么想法可以解决我的问题吗?
谢谢。
当 scroll
事件针对元素滚动经过的每个像素触发时,就会发生这种情况。这可能意味着事件处理程序在一秒钟内被触发数百次,因此浏览器将 'skip' 根据 UI 线程的滴答率处理其中一些事件。
这意味着它可能只在滚动时检测某些 scrollTop 值,因此 scrollTop
可能只在 480
、499
、522
处读取,给定您的代码样本。因此,即使用户滚动超过 500 像素,您对 == 500
的测试也不会命中。滚动速度变慢会减弱这种效果,因此它对你有用。
解决这个问题的方法是通过检查一系列 scrollTop 值来使您的代码更健壮,例如在您的示例中使用 >
而不是 =
:
if ($(window).scrollTop >= 500) {
console.log('You have scrolled down over 500px');
}