使用jQuery延迟JavaScript函数调用

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"> 

一旦我点击了button, sample()函数就不会被延迟2秒。 我不知道什么是错的。

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

由于您在传递ready匿名函数内部声明sample ,因此它被限定为该函数。

然后你将一个string传给setTimeout ,这个值在2秒后被eval 。 这发生在当前范围之外,所以找不到该function。

只传递函数 setTimeout ,使用eval是效率低下,难以debugging。

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

jsFiddle 。

如果你想封装sample() ,把所有东西包装在一个自调用函数(function() { ... })()

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

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

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

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