次のコードを使用して、一連の要素を循環させていました。
$(this).next().show().animate({top: '25px'},250,function(){
$(this).addClass('active');
});
しかし、要素のリストの最後に到達し、もう一度循環する必要があるため、これは制限されていたので、このプラグインを作成しました。
(function($){
$.fn.extend({
rotater: function(class_check){
return this.each(function(){
if($(this).next().hasClass(class_check)){
return $(this).next();
} else {
return $(this).parent().children().first();
}
});
}
});
})(jQuery);
目的のセット(すべて共通のクラスを共有している)の終わりに到達したことを検出し、到達した場合は、最初のオブジェクトを取得して、サイクル全体を再開します。
呼び出しコードを次のように変更しました。
$(this).rotater('common_class').show().animate({top: '25px'},250,function(){
$(this).addClass('active');
});
しかし、それは完全に機能しなくなりました!混乱しています。「最初に戻る」スクリプトが失敗したかどうかは理解できましたがnext()
、文字通り.の値を返しているため、少なくとも最初のサイクルはまったく同じように動作するはずですnext()
。
私のhtmlは次のようになります:
<div id="parent>
<div class="common_class"></div>
<div class="common_class"></div>
<div class="common_class"></div>
<div class="common_class"></div>
<div class="undesired_elemement"></div>
</div>