使用jQuery延迟JavaScript函数调用

Moh*_*Ram 43 javascript jquery

JavaScript的:

$(document).ready(function(){

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

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

});
Run Code Online (Sandbox Code Playgroud)

HTML:

<input type="button" id="button" value="Call sample function with delay">
Run Code Online (Sandbox Code Playgroud)

单击按钮后,sample()不会以2秒的延迟调用函数.我不知道出了什么问题.

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

Que*_*tin 85

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

然后,通过一个字符串setTimeouteval2秒后编.这发生在当前范围之外,因此无法找到该功能.

只有通过功能setTimeout,使用eval是效率低下,难以调试.

setTimeout(sample,2000)
Run Code Online (Sandbox Code Playgroud)

  • ...或者你喜欢的东西:`setTimeout(function(){myBarFunction('whatever','parameter',123)},2000); (3认同)

ale*_*lex 35

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

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

});
Run Code Online (Sandbox Code Playgroud)

jsFiddle.

如果要封装sample()在那里,请将整个事物包装在自调用函数中(function() { ... })().


Fiz*_*zix 16

非常简单,只需使用setTimeout()在特定的毫秒内调用该函数

setTimeout(myFunction, 2000)

function myFunction() {
    alert('Was called after 2 seconds');
}
Run Code Online (Sandbox Code Playgroud)

或者你甚至可以在超时内启动函数,如下所示:

setTimeout(function() {
    alert('Was called after 2 seconds');
}, 2000)
Run Code Online (Sandbox Code Playgroud)