Javascript延迟事件

问题描述:

我有一个函数handleScroll当窗口的滚动位置改变时需要调用它。这里是代码Javascript延迟事件

$(window).scroll(handleScroll); 

但问题是,上面的代码结束了太频繁调用handleScroll。如何修改上面的代码,以便在用户停止滚动200毫秒后才调用handleScroll?

+2

这就是所谓的[ “去抖动”(http://unscriptable.com/2009/03/20/debouncing-javascript-方法/)。 – zzzzBov 2012-07-25 03:48:42

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);