如何在 jQuery 中得到这个:在延迟(3s)后使用工作代码调用一些函数,如果我在第一次调用未完成的延迟之前再次调用函数,则重置延迟并调用新的 3s。
示例:
fce MeDeday(3s) - 时间结束后 -alert("hello");
情况1:
调用 MeDelay() - 时间已到 -alert("hello")
情况2:
调用MeDelay()
距离第一次调用还剩 2 秒
重置时间并再次等待3秒,没有2秒+5秒并触发2次警报(“hello”)
调用 MeDelay() - 时间已到 -alert("hello")
最佳答案
这称为去抖动,它与节流密切相关。有一个很好的 jQuery 插件:jQuery throttle/debounce .
我认为这就是您正在寻找的用例:
function fn()
{
alert('hello');
}
var debouncedFn = $.debounce(3000, fn);
$('#my-button').click(debouncedFn);
关于jQuery 添加和删除延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5340053/