2016-12-06 3 views
2

持つ複数の要素にクラスを切り替え!今では、ラッパーの基底クラスを持つ複数の要素が得られました.grid-itemjQueryのは、私は区間内の要素のクラスを切り替えるには、この少し派手なjQueryのスニペットを作成した間隔

<div class="grid-item"> 
    <div class="slide-image"><img src="http://www.placehold.it/500x500/233953"></div> 
    <div class="slide-image"><img src="http://www.placehold.it/500x500/03144b"></div> 
    <div class="slide-image"><img src="http://www.placehold.it/500x500/030a4b"></div> 
</div> 

.slide-imageは最初の1の後にクラス.activeを取得するように、スニペットを書き換える方法はありますか?次に、3番目の要素など...

問題:.slide-imageの要素は定義されていません。場合によっては2つあり、別の要素には4つの要素があります。

Check out my CodePen!

答えて

5

現在アクティブな要素のidが続くかどうかをチェックすることができます。この

var slides = $('.grid-item .slide-image'), // cache slides 
    counter = 0;       // global counter 

setInterval(function(){ 
    slides.removeClass('active');    // remove active class 
    slides.eq(counter).addClass('active'); // add active class 
    counter++; 

    if (counter == slides.length) counter = 0; // reset counter after last slide 
}, 800); 

Updated CodePen

+0

ありがとう!正常に動作します。今私はMouseover-Eventを追加し、 '$(this).find("。slide-image ")'で要素を取得しました。今、いくつか変わったことが起こっています:http://codepen.io/anon/pen/VmXNZj – Jonas

+0

@Jonasこれは新しい質問ですが、要するに、あなたがマウスオーバーするたびに新しい間隔を設定しているので、あなたの間隔をクリアする必要があります – Pete

1

を試してみてください。それがある場合は、設定され、他のショーの最初の要素を示し、次の兄弟要素:

$(function(){ 
    var slides = $('.grid-item .slide-image'); 
    setInterval(function(){ 
    var currentactive = $('.active'); 
    var _target = currentactive.is(':last-child') ? slides.first() : currentactive.next(); 
    slides.removeClass('active') 
    _target.addClass('active') 
}, 800); 
}); 

Working Demo

関連する問題