如果您要使用当前使用的方法,则应.delay()
在最初调用.animate()
. 但是,这会假设您连续多次调用此方法。
$('.photogallery').delay(4000).animate({
opacity: 0
}, 3000, function () {
$(this).css('background', 'url(' + preloadArr[currImg++%preloadArr.length].src +')';
}).animate({
opacity: 1
}, 3000);
演示
如果您希望该方法自触发下一次迭代,您可以changeImg
在动画执行结束时递归调用。尽管这会旋转图像,但利用递归进行无限循环通常会在浏览器中产生问题。
$('.photogallery').delay(4000).animate({
opacity: 0
}, 3000, function () {
$(this).css('background', 'url(' + preloadArr[currImg++%preloadArr.length].src +')';
colorIndex++;
}).animate({
opacity: 1
}, 3000, changeImg);
演示
首选方法可能是用于window.setInterval
设置浏览器调用该方法之间的时间长度。您将不得不使用时间,因为它不尊重方法中发生的动画延迟。为了轻松解决这个问题,我在安排 with 之前简单地调用了一次setInterval
。
changeImg();
window.setInterval(changeImg, 4000);
演示