2012-07-25 159 views
4

我有一個函數handleScroll當窗口的滾動位置改變時需要調用它。這裏是代碼Javascript延遲事件

$(window).scroll(handleScroll); 

但問題是,上面的代碼結束了太頻繁調用handleScroll。如何修改上面的代碼,以便在用戶停止滾動200毫秒後才調用handleScroll?

+2

這就是所謂的[ 「去抖動」(http://unscriptable.com/2009/03/20/debouncing-javascript-方法/)。 – zzzzBov 2012-07-25 03:48:42

回答

2
var timeoutHandle; 

$(window).scroll(function(e) { 
    if (timeoutHandle) { 
     clearTimeout(timeoutHandle); 
    } 
    timeoutHandle = setTimeout(function() { 
     handleScroll(e); 
     timeoutHandle = null; 
    }, 200); 
}); 
0

使用underscorejs庫,它可以很容易作爲

var debounceid = _.debounce(handleScroll, 200); 
$(window).resize(debounceid);