你的问题是,你正在尝试使用.delay()
作为本地setTimeout()
的替代品,这是不是它的意图做。 .delay()
函数用于在jQuery动画效果之间添加暂停,而不是延迟另一个函数的执行,并且不接受回调函数。请参阅.delay()
函数的jQuery文档。
正如已经覆盖以前的答案,您可以使用本机setInterval()
函数来实现你的延迟之后:
function random(){
$("#randomImage1").animate({opacity: '0.0'}).load("../images/randomImage.php").animate({opacity: '1.0'});
setInterval(random, 2000);
}
random();
注意,这将#randomImage1
元素动画回到完全不透明,和即使来自的AJAX调用没有返回成功响应,也要设置间隔以再次调用该函数。如果这不是你想要的,你可以移动而不是代码到作为成功回调传递一个匿名函数上,就像这样:
function random(){
$("#randomImage1").animate({opacity: '0.0'}).load("../images/randomImage.php",
function() {
$("#randomImage1").animate({opacity: '1.0'});
setInterval(random, 2000)
});
}
random();
说“做这个”,并张贴代码是没有意义的。 -1直到你解释为什么**。 –
@AnthonyGrist:继续做-1,我会评论说'如果我看到你的答案,最好能解释+1'。 – Blaster
Upvoting会给人错误的印象 - 我认为答案很有用。没有解释原来的方法有什么问题,问这个问题的人没有学到任何东西;他们只是得到可行的代码。 –