4
我有一個函數handleScroll
當窗口的滾動位置改變時需要調用它。這裏是代碼Javascript延遲事件
$(window).scroll(handleScroll);
但問題是,上面的代碼結束了太頻繁調用handleScroll
。如何修改上面的代碼,以便在用戶停止滾動200毫秒後才調用handleScroll?
我有一個函數handleScroll
當窗口的滾動位置改變時需要調用它。這裏是代碼Javascript延遲事件
$(window).scroll(handleScroll);
但問題是,上面的代碼結束了太頻繁調用handleScroll
。如何修改上面的代碼,以便在用戶停止滾動200毫秒後才調用handleScroll?
var timeoutHandle;
$(window).scroll(function(e) {
if (timeoutHandle) {
clearTimeout(timeoutHandle);
}
timeoutHandle = setTimeout(function() {
handleScroll(e);
timeoutHandle = null;
}, 200);
});
使用underscorejs庫,它可以很容易作爲
var debounceid = _.debounce(handleScroll, 200);
$(window).resize(debounceid);
這就是所謂的[ 「去抖動」(http://unscriptable.com/2009/03/20/debouncing-javascript-方法/)。 – zzzzBov 2012-07-25 03:48:42