我有一些带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);
});
答案 0 :(得分:9)
我的看法:
$('.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);
答案 1 :(得分: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);
答案 2 :(得分:0)
试试这个:
function changeCurrent(){
$('.set').each(function(){
var currentSubDiv = $(this).children('.current');
currentSubDiv.removeClass('current');
currentSubDiv.next().addClass('current');
})
}
setInterval(changeCurrent,timeInMillis);