循环setInterval函数

时间:2013-05-23 20:01:06

标签: javascript jquery loops setinterval

我不确定为什么间隔没有循环。我完全按照教程,但没有运气。建议?

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

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

5 个答案:

答案 0 :(得分:2)

一个可能的<丑陋解决方案:

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

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

DEMO: http://jsfiddle.net/pa7aU/4/

答案 1 :(得分: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/

答案 2 :(得分:0)

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

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

FIDDLE

答案 3 :(得分:0)

当你在最后li时,next()没有去第一个。

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

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

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

答案 4 :(得分:0)

只是添加新内容:

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