4

我有一些带有 div 的 div,我想循环遍历这些 div,同时从当前的类中删除一个类,然后将一个类添加到下一个类。

然后当我到达最后一个时,我想回到起点重新做一遍。

我已经有办法做到这一点,但它只适用于一组 div,我将有许多组需要独立循环的 div。

这是几个集合的示例(每个集合中会有随机数量的 div):

<div class="set">
    <div class="current">Item1</div>
    <div>Item2</div>
    <div>Item3</div>
</div>


<div class="set">
    <div class="current">Item1</div>
    <div>Item2</div>
    <div>Item3</div>
    <div>Item4</div>
    <div>Item5</div>
</div>

我需要删除该当前类,并将其添加到每个集合中的下一个 div 中,依此类推。

这是我拥有的适用于一组的代码:

$(function() {
    var items = $('.set div').length;
        current = 0;

    setInterval(function() {
        $('.set div').eq(current).removeClass('current');

        if (current == items - 1){
            current = 0;
        } else {
            current++;
        }

        $('.set div').eq(current).addClass('current');
    }, 500);
});
4

3 回答 3

9

我的看法:

http://jsfiddle.net/yyY28/

$('.set').each(function(){
    (function($set){
        setInterval(function(){
            var $cur = $set.find('.current').removeClass('current');
            var $next = $cur.next().length?$cur.next():$set.children().eq(0);
            $next.addClass('current');
        },1000);
    })($(this));

});​

版本 2:

​setInterval(function(){
    $('.set').each(function(){
        var $cur = $(this).find('.current').removeClass('current');
        var $next = $cur.next().length?$cur.next():$(this).children().eq(0);
        $next.addClass('current');
    });
},1000);​
于 2012-06-08T12:54:47.117 回答
2

也许我没有让你正确,但你正在寻找吗?

function loop() {
    $(".set").each(function() {
        var current = $(this).children(".current").removeClass("current");
        var i = current.next().length ? current.index() : 0;
        current.siblings(":eq(" + i + ")").addClass("current");
    });
}

setInterval(loop, 500);​

演示:http: //jsfiddle.net/jGcsh/

于 2012-06-08T12:55:08.610 回答
0

试试这个:

function changeCurrent(){
    $('.set').each(function(){
        var currentSubDiv = $(this).children('.current');
        currentSubDiv.removeClass('current');
        currentSubDiv.next().addClass('current');
    })
}

setInterval(changeCurrent,timeInMillis);
于 2012-06-08T12:53:45.027 回答