【问题标题】:To delay JavaScript function call using jQuery使用 jQuery 延迟 JavaScript 函数调用
【发布时间】:2011-03-16 07:46:44
【问题描述】:

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函数?

【问题讨论】:

  • 您应该在控制台上看到类似 sample is not defined 的内容。
  • @Felix Kling,如果您向我提及,我可以看到定义的示例。

标签: javascript jquery


【解决方案1】:

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

然后,您将 字符串 传递给 setTimeout,在 2 秒后 evaled。这发生在当前范围之外,所以找不到函数。

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

setTimeout(sample,2000)

【讨论】:

  • ...或者根据自己的喜好换行:`setTimeout(function() { myBarFunction('whatever','parameter', 123)}, 2000 );
【解决方案2】:
function sample() {
    alert("This is sample function");
}

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

});

jsFiddle.

如果你想在那里封装sample(),请将整个东西包装在一个自调用函数(function() { ... })()中。

【讨论】:

    【解决方案3】:

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

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

    或者你甚至可以在超时时间内启动函数,像这样:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 2012-12-04
      相关资源
      最近更新 更多