Javascript延迟事件

时间:2012-07-25 03:33:48

标签: javascript debouncing

我有一个函数handleScroll,需要在窗口的滚动位置发生变化时调用它。这是

的代码
$(window).scroll(handleScroll);

但问题是上面的代码最终过于频繁地调用handleScroll。如何修改上面的代码,以便只在用户停止滚动200毫秒后才调用handleScroll?

2 个答案:

答案 0 :(得分:2)

var timeoutHandle;

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

答案 1 :(得分:0)

使用underscorejs库,可以轻松实现

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