setTimeout功能不起作用

时间:2011-12-18 13:28:14

标签: javascript

我正在尝试使用jQuery setTimeout以便每x个时间间隔调用一个方法:

 $('.text').blur(function () {
     doSmth();
 });

 $('.text').bind("paste", function (e) {
     setTimeout(function () {
         doSmth();
     }, 5);
 });

超时无效,请指教!

4 个答案:

答案 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);
    });

感谢您的支持。