我正在写一个横幅旋转器,我想让它在几秒钟后在几张照片中循环。 jQuery是否有等待然后调用回调的东西?我可以看到.delay方法,但它似乎没有回调函数。或者我应该使用依赖于浏览器的功能?或者javascript已经包含了我需要的功能? 我是javascript的新手: - |
答案 0 :(得分:3)
您始终可以使用原生javascript:
setTimeout(function(){ /* do your stuff */ }, 1000);
你可以通过mixins获得一些乐趣:
var timeoutCallback = function() {
this.foo = 5;
}
var scheduleTimeout = function(obj, delay) {
setTimeout(function(){ timeoutCallback.call(obj); }, delay);
}
var myobj = { foo: 1, bar: 2 }
scheduleTimeout(myobj, 1000); // myobj.foo becomes 5 after 1000ms delay
答案 1 :(得分:0)
如果您想要做的是时间jQuery效果,那么你应该推迟being
。
查看jQuery documentation on effects,并密切关注效果队列的工作原理,这是一个非常好的框架。 :)
答案 2 :(得分:0)
所以你需要立即开始效果,但过了一段时间?好吧,这就是delay()函数。
$("#test").delay(3000).fadeOut('slow');
// after 3 seconds element starts to fade out
P.S。
但要小心谨慎。例如这段代码:
$("#test").fadeOut(1000).sleep(1000).fadeIn(1000);
不会像有人想象的那样奏效。睡眠将与fadeOut同步,但在终止后不会。因此,如果你想完成一个效果而不是制作一些东西 - 你应该通过回调功能来制作。
答案 3 :(得分:0)
这是我能想到的最简单的例子,也是Joy Dutta所说的精简版。它首先显示“请等待”,并在3秒后“完成!”。将它扔进Firebug控制台,看看会发生什么: - )
$('body').html('Please wait!');
setTimeout(function (){$('body').html('...done!');}, 3000);