使用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)