慕无忌1623718
下面是一个使用setTimeout在用户停止滚动时触发函数的简单示例:(function() { var timer; $(window).bind('scroll',function () { clearTimeout(timer); timer = setTimeout( refresh , 150 ); }); var refresh = function () { // do stuff console.log('Stopped Scrolling'); };})();在滚动事件触发时清除计时器。滚动停止后,将触发刷新功能。或者作为插件:$.fn.afterwards = function (event, callback, timeout) { var self = $(this), delay = timeout || 16; self.each(function () { var $t = $(this); $t.on(event, function(){ if ($t.data(event+'-timeout')) { clearTimeout($t.data(event+'-timeout')); } $t.data(event + '-timeout', setTimeout(function () { callback.apply($t); },delay)); }) }); return this;};在div(带命名空间)上的最后一个滚动事件的100ms之后触发回调:$('div.mydiv').afterwards('scroll.mynamespace', function(e) { // do stuff when stops scrolling $(this).addClass('stopped'); }, 100);我用它来滚动和调整大小。