2011-02-04 29 views
0

我正在写一个横幅旋转器,我希望它在几秒钟之后在几张图片之间循环。 jQuery有什么可以等待然后调用回调吗?我可以看到.delay方法,但它似乎没有回调函数。或者,也许我应该使用浏览器相关的功能?或者,也许JavaScript已经包含我需要的功能? 我是javascript新手: - | 。在jQuery中计时/等待

回答

3

您可以随时使用本地JavaScript:

setTimeout(function(){ /* do your stuff */ }, 1000); 

你可以有一些有趣的混入:

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 
+0

你确定`.call`会工作吗?不会`this`指向anon函数内的`window`对象吗? – 2011-02-05 00:31:01

0

你说得对有关延迟being要走的路,如果你想做的是时间jQuery效果。

看那jQuery documentation on effects,并密切关注影响队列是如何工作的,这是一个非常好的框架。 :)

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同步运行,但不会在终止后运行。所以如果你想完成一个效果而不是制作一些东西 - 你应该使用回调函数。

0

这是我能想到的最简单的例子,什么喜悦杜塔已经说过的浓缩版。它首先显示“请稍等”,3秒后显示“......完成!”。把它扔进萤火虫控制台,看看会发生什么:-)

$('body').html('Please wait!'); 
setTimeout(function(){$('body').html('...done!');}, 3000);