【问题标题】:jQuery looping command [closed]jQuery循环命令[关闭]
【发布时间】:2013-01-25 16:35:08
【问题描述】:

如何让这个动画从头开始连续重复? http://jsfiddle.net/philoman/RuX5d/8/

$(document).ready(function() {
var i = 1, dir = 1, curFx = 'fadeIn';
var interval = setInterval(function () {
    if (i == 2 && $('#slide1').is(':visible')) {
        $('#slide1').fadeOut(6000);             
        return;
    }

    $('#slide'+ i)[curFx](1500);

    i = i + 1*dir;

    if (i == 10 || i == -1) {
        dir = (dir == 1)?-1:1;
        curFx = (curFx == 'fadeIn')?'fadeOut':'fadeIn';
    }        
}, 1500);
});

【问题讨论】:

  • 您在此处发布的代码与您小提琴中的代码不同。
  • @FelixKling 现在 OP 完全 改变了他的问题...
  • 对不起,你被扣分了,人们可能是混蛋。你做错了。我会在一分钟后发布一个示例
  • @Shaanimal 这个问题值得反对。它与“混蛋”无关,与表明这不是您在 SO 上提问的方式有关。
  • Anthony Grist,告诉我如何正确提问?我不是程序员,想寻求帮助。

标签: javascript jquery


【解决方案1】:

使用异步递归。

$(document).ready(function me() {
    $("#slide1").fadeIn(100).delay(100).fadeOut(100, function () {
        (function startFade(slide, step) {
            if ((slide === 1) && (step === -1)) {
                setTimeout(me, 100);
            } else if (slide < 10) {
                $("#slide" + slide)[step === 1 ? "fadeIn" : "fadeOut"](100, function () {
                    startFade(slide + step, step);
                });
            } else {
                startFade(slide - step, -step);
            }
        }(2, 1));
    });
});

【讨论】:

  • Ryan 的代码建议基于此:jsfiddle.net/philoman/RuX5d/11
  • 这能回答你的问题吗?如果不让我知道原因,我会尝试更改它以解决问题。
  • 瑞恩,感谢您的帮助。我在这里jsfiddle.net/philoman/q9EZg/5 尝试了你的建议。唯一的问题是动画将从 slide2 而不是从 slide1 重复。我试图重新定位代码但没有成功。
  • 好吧,给我一点时间来理解它,一直在回答其他问题,所以我一直在失去对话的背景,哈哈。
  • 怎么样(见我上面的回答 - 刚刚编辑过)?我想这就是你要找的。如果不是,我认为从那里开始做你需要的事情应该相当简单。
【解决方案2】:

创建一个回滚到开始的函数。

function loopback(){
...
   //inside your innermost fn:
   loopback();  
...
}

【讨论】:

    【解决方案3】:

    我有一个较短的版本:

    function animate(slide){
         slide.fadeIn(500, function() {
            var next = slide.next();
             if(next.length > 0){
                  animate(next);
             }
         });
    }
    
    $(document).ready(function() {
        animate($('#slide1'));
    });
    

    演示:http://jsfiddle.net/RuX5d/6/

    【讨论】:

    猜你喜欢
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 2012-02-23
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    相关资源
    最近更新 更多