jQuery添加和删除延迟

时间:2011-03-17 14:00:17

标签: jquery delay

如何在jQuery中得到这个:在延迟(3s)之后调用一些带有工作代码的函数,如果我在第一次调用延迟之前再次调用函数,则重置延迟并调用新的3s。

示例:

fce MeDeday(3s) - 时间过后 - 警告(“你好”);

情况1:

调用MeDelay() - time down - alert(“hello”)

情况2:

致电MeDelay()

第一次通话

仍然是2秒

重置时间并再次等待3s,没有2s + 5s并且发出2次警报(“你好”)

调用MeDelay() - time down - alert(“hello”)

2 个答案:

答案 0 :(得分:4)

这称为 debouncing,,与限制密切相关。有一个很好的jQuery插件:jQuery throttle/debounce

我认为这是您正在寻找的用例:

function fn()
{
    alert('hello');
}

var debouncedFn = $.debounce(3000, fn);

$('#my-button').click(debouncedFn);

Demo →

答案 1 :(得分:4)

没有jQuery:

var MeDelay = (function() {
    var timer;
    return function(timeout) {
        timeout = timeout || 3000;
        if(timer) {
            clearTimeout(timer);
        }
        timer = setTimeout(function() {
            alert('hello');
        }, timeout);
    }
}());