Javascript延迟事件
问题描述:
我有一个函数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