2

間隔がループしていない理由がわかりません。チュートリアルを正確に実行しましたが、うまくいきませんでした。提案?

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

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

4

5 に答える 5

2

考えられる醜い解決策の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/

于 2013-05-23T20:05:04.933 に答える
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/

于 2013-05-23T20:05:42.443 に答える
0

あなたが最後liにいるときnext()、最初に行きません。

簡単な修正は、後に追加することです:

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

フィドル: http://jsfiddle.net/pa7aU/5/

于 2013-05-23T20:07:41.630 に答える
0

ミックスに何か新しいものを追加するだけです:

$(document).ready(function () {
    setInterval(function () {
        $('li').eq(($('.current').removeClass('current').index() + 1) % $('li').size()).addClass('current');
    }, 200);
});
于 2013-05-23T20:09:01.787 に答える
0

最後の要素に到達したら、 を使用せずに最初に戻る必要があります.next()

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

フィドル

于 2013-05-23T20:05:15.787 に答える