【问题标题】:Loop setInterval function循环 setInterval 函数
【发布时间】:2013-05-23 20:01:05
【问题描述】:

我不确定为什么间隔不循环。我完全按照教程进行操作,但运气不佳。有什么建议吗?

$(document).ready(function(){
  setInterval(function() {
    $('.current').removeClass('current').next().addClass('current');  
    }, 2000);
});

更新:http://jsfiddle.net/pa7aU/3/

【问题讨论】:

  • 当它到达最后一个元素时,没有.next(),所以它没有什么要添加的类。
  • 你想达到什么目的?

标签: javascript jquery loops setinterval


【解决方案1】:

一种可能的解决方案:

setInterval(function() {
    var $current = $(".current").removeClass("current"),
        $next = $current.next();

    if ($next.length)
        $next.addClass("current");
    else
        $current.siblings(":first").addClass("current");
}, 2000);

演示: http://jsfiddle.net/pa7aU/4/

【讨论】:

    【解决方案2】:
    $(document).ready(function () {
        var $li = $('ul li'), i = 0, l = $li.length;
        setInterval(function() {
            $li.removeClass('current').eq(i % l).addClass('current');
            i++;
        }, 2000);
    });
    

    http://jsfiddle.net/chg4J/

    【讨论】:

      【解决方案3】:

      到达最后一个元素时,需要回到开头,不要使用.next()

      $(document).ready(function () {
          setInterval(function () {
              var next = $('.current').removeClass('current').next();
              if (next.length == 0) {
                  next = $("li:first");
              }
              next.addClass('current');
          }, 2000);
      });
      

      FIDDLE

      【讨论】:

      • 谢谢!这非常有效!我知道我必须做什么,但在编码时遇到了麻烦。
      【解决方案4】:

      当你在最后一个linext()不会去第一个。

      一个简单的解决方法是在之后添加:

      if($('.current').length <= 0) $('li:first').addClass('current');
      

      小提琴:http://jsfiddle.net/pa7aU/5/

      【讨论】:

        【解决方案5】:

        只是为了添加一些新的东西:

        $(document).ready(function () {
            setInterval(function () {
                $('li').eq(($('.current').removeClass('current').index() + 1) % $('li').size()).addClass('current');
            }, 200);
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-12-06
          • 2021-11-18
          • 1970-01-01
          • 2011-03-24
          • 2022-09-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多