在jQuery中计时/等待

时间:2011-02-04 23:57:21

标签: javascript jquery time delay wait

我正在写一个横幅旋转器,我想让它在几秒钟后在几张照片中循环。 jQuery是否有等待然后调用回调的东西?我可以看到.delay方法,但它似乎没有回调函数。或者我应该使用依赖于浏览器的功能?或者javascript已经包含了我需要的功能? 我是javascript的新手: - |

4 个答案:

答案 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);