替代(窗口).scroll

可能重复:
ScrollTop在Chrome中真的很生涩

我正在使用以下代码获取一个返回顶部按钮,并在用户滚动后导航淡入。 问题是每次滚动时它都会触发,因此导致滚动变得非常生涩。 是否有另一种方法可以执行此操作,这可能只触发一次该function?

$(function () { $(window).scroll(function () { if ($(this).scrollTop() > 600) { $('#backToTop, #navigation').fadeIn(); } else { $('#backToTop, #navigation').fadeOut(); } }); }); }); 

也许设置超时……

 function scrollit(){ if ($(this).scrollTop() > 600) { $('#backToTop').fadeIn(); } else { $('#backToTop').fadeOut(); } } var timer; $(window).scroll(function () { window.clearTimeout(timer); timer = window.setTimeout(function(){ scrollit(); }, 2000); }); 

你可以实现Ben Alman的jQuery限制或去抖动插件。 基本上这限制了您的function只运行一定次数。 两者之间的差异在网站上解释:

好吧,简单地说:虽然限制将函数的执行限制为每个延迟毫秒不超过一次,但是debouncing保证该函数只会被执行一次(给定一个指定的阈值)。