我正在尝试使用jQuery setTimeout以便每x个时间间隔调用一个方法:
$('.text').blur(function () {
doSmth();
});
$('.text').bind("paste", function (e) {
setTimeout(function () {
doSmth();
}, 5);
});
超时无效,请指教!
答案 0 :(得分:2)
你对“它不工作”是什么意思?无论如何,setTimeout()是一个Javascript函数,在指定的时间间隔后只触发一次。
如果你不想每五秒触发一次,你应该这样做:
var interval = setInterval(doSmth, 5000);
其中doSmth
是在别处定义的函数,5000
是间隔的毫秒数。如果您想停止执行,请执行以下操作:
clearInterval(interval);
答案 1 :(得分:1)
首先,它不是“jQuery setTimeout”。 setTimeout
是本机API的一部分,而不是jQuery的API。
其次,我假设你想要 5秒。目前你正在做 5毫秒。
$('.text').bind("paste", function(e) {
setTimeout(function() {
doSmth();
}, 5000);
});
代码中5
的持续时间太短,无法察觉。
答案 2 :(得分:0)
我看到另一个回答用户setInterval,但是从我读过的内容中,你应该避免使用setInterval,因为你最终可能会得到一堆尚未执行的函数调用等。
所以你能做的就是这样:
var myTimeout;
$('.text').bind("paste", function (e) {
function loopFunction () {
doSmth();
myTimeout = setTimeout(loopFunction, 5000);
}
myTimeout = setTimeout(loopFunction, 5000);
});
现在你有一个每五秒调用一次的函数。
答案 3 :(得分:0)
根据您的反馈,这是解决方案:
var interval = setInterval(doSmth, 5000);
$('.text').blur(function() {
doSmth();
});
$('.text').bind("paste", function(e) {
setTimeout(function() {
doSmth();
}, 0);
});
感谢您的支持。