javascript - 如何使用 JQuery 创建循环动画

标签 javascript jquery animation

我已经在这个问题上坐了几个小时了,但无法弄清楚这一点。我正在尝试创建一个无限循环的幻灯片(3 张幻灯片)。每张幻灯片都是 #slideshow 中的一个 li。我已经使用调试器完成了这个过程,所有变量都设置正确,但我不明白为什么动画实际上没有发生。我有这个最终显示页面上的所有图像:

$(document).ready(function() {
$slideshow = $('#slideshow');

$slideshowItems = $slideshow.find('li');

$slideshowItems.hide();

nextI = function(x) {       
        if ((x+1) < $slideshowItems.length) {
            return x+1;
        }
        else {
            return 0;
        }
    }

animation = function(i) {       
    $slideshowItems.eq(i).fadeIn(500).delay(1000).fadeOut(500, animation(nextI(i)));
}

animation(0);

如果我这样做:

$slideshowItems.eq(0).fadeIn(500).delay(1000).fadeOut(500, 
     $slideshowItems.eq(1).fadeIn(500).delay(1000).fadeOut(500,
         $slideshowItems.eq(2).fadeIn(500).delay(1000).fadeOut(500));

这按预期工作,但看起来很难看并且不循环。

知道为什么我无法让它工作吗?我觉得这符合我对 JQuery/JS 如何修改 DOM 或浏览器用于执行动画的序列的期望。谢谢您的帮助!

最佳答案

var $slideshowItems = $('#slideshow').find('li'), 
    i = 0;

(function loop() {

    $slideshowItems.eq( i ).fadeIn(500).delay(1000).fadeOut(500, loop);
    i = ++i % $slideshowItems.length;

})();

<强> JSFIDDLE DEMO

关于javascript - 如何使用 JQuery 创建循环动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8261273/

相关文章:

javascript - Angular 4路由添加组件而不是替换它

javascript - 如何以这种形式获得日期?

javascript - Bootstrap Alert 的干净示例

javascript - 无法从动态加载的脚本中读取 DOM 属性

android - 如何使用动画 move 和淡出任何 View

Javascript $http 依赖注入(inject)

javascript - 如何在没有 Express 的情况下增加 Node.js querystring post 请求的限制?

javascript - 如果复选框被选中,则功能是否被选中,如果未被选中,则功能不同?

ios - UItableview从下往上重新加载动画

javascript - 在特定滚动位置激事件画