【问题标题】:Stop on last list-item after cycle function循环功能后在最后一个列表项上停止
【发布时间】:2014-09-11 09:47:08
【问题描述】:

我有一个有序列表,每个列表项都会循环显示一次。淡入,然后在淡出之前延迟一段时间,并以相同的方式显示下一个列表项。这一切正常,但是当到达最后一个列表项时,它会返回开始并以连续循环运行。代码如下:

$(function() {
      var item = $('.test li').hide(),
          i = 0;
      (function cycle() {
          item.eq(i).fadeIn(400).delay(2000).fadeOut(200, cycle);
          i = ++i % item.length;
      })();
  });

我在item.eq(i).fadeIn(400) 行上方添加了if (i==10){return;},它阻止了列表项循环,但最后一个列表项没有显示,可能是因为它淡出。如何阻止最后一项不显示。所以它会淡入,然后动画就结束了?

干杯!

【问题讨论】:

    标签: javascript jquery html cycle


    【解决方案1】:

    试试这个:

    $(function() { 
    
    var item = $('.test li').hide(),
    i = 0;
    
    (function cycle() {
        if(i==item.length-1){
            item.eq(i).fadeIn(400);
            return;
        }
        item.eq(i).fadeIn(400)
                  .delay(2000)
                  .fadeOut(200, cycle);
        i = ++i % item.length;
    })();
    
    });
    

    让我知道这是否有效。

    【讨论】:

    • 您好,非常感谢!当我有足够的代表时,我会 +1 你!再次干杯!
    • 很高兴知道。干杯。
    【解决方案2】:

    只是让它只在i == 10时淡入然后返回?

    (function cycle() {
        if (i == 10)
        {
            item.eq(i).fadeIn(400);
            return;
        }
    
        item.eq(i).fadeIn(400)
                  .delay(2000)
                  .fadeOut(200, cycle);
    
        i = ++i % item.length;
    })();
    

    【讨论】:

    • 这太好了,感谢您提供解决此问题的替代方法!
    【解决方案3】:

    类似这样的:

    var item = $('.test li').hide(),
        i = 0;
    
    (function cycle() {
    
        var curr = item.eq(i).fadeIn(400);
    
        if (i != item.length - 1) {
            curr.delay(2000).fadeOut(200, cycle);
            i = ++i % item.length;
        }
    
    })();
    

    演示:http://jsfiddle.net/62zm9sa9/

    【讨论】:

    • 这是另一个很棒的版本,我是 javascript 新手,所以获得同一事物的几个不同版本真的很有帮助,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    相关资源
    最近更新 更多