使用jQuery延迟JavaScript函数调用

时间:2011-03-16 07:46:45

标签: javascript jquery

的JavaScript:

$(document).ready(function(){

    function sample() {
       alert("This is sample function");
    }

    $("#button").click(function(){
        t = setTimeout("sample()",2000);
    });

});

HTML:

<input type="button" id="button" value="Call sample function with delay">

单击按钮后,sample()函数不会被调用,延迟时间为2秒。我不知道出了什么问题。

如何通过jQuery使用setTimeout()调用JavaScript函数?

3 个答案:

答案 0 :(得分:84)

由于您在传递给sample的匿名函数中声明了ready,因此它的作用域是该函数。

然后将字符串传递给setTimeout,{2}后eval。这发生在当前范围之外,因此无法找到该功能。

仅将函数传递给setTimeout ,使用eval效率低且难以调试。

setTimeout(sample,2000)

答案 1 :(得分:34)

function sample() {
    alert("This is sample function");
}

$(function() {
    $("#button").click(function() {
        setTimeout(sample, 2000);
    });

});

jsFiddle

如果要封装sample(),请将整个内容包装在自调用函数(function() { ... })()中。

答案 2 :(得分:16)

非常简单,只需使用setTimeout()

在特定的毫秒内调用该函数
setTimeout(myFunction, 2000)

function myFunction() {
    alert('Was called after 2 seconds');
}

或者您甚至可以在超时内启动该功能,如下所示:

setTimeout(function() {
    alert('Was called after 2 seconds');
}, 2000)