4

現在のクラスからクラスを削除し、次のクラスにクラスを追加しながらループしたい div を含む div がいくつかあります。

そして最後まで来たらまた最初に戻ってやり直したい。

私はすでにこれを行う方法を持っていますが、それは div の 1 つのセットに対してのみ機能します。独立してループする必要がある 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 に追加する必要があります。

これが私が持っているコードで、1つのセットで動作します:

$(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 に答える