我有四个课程show
,hide1
,hide2
和hide3
。我想更改每个类,并将其替换为旁边的类。换句话说,我的jQuery代码看起来像这样......
$(".show").removeClass("show").addClass("hide1");
$(".hide1").removeClass("hide1").addClass("hide2");
$(".hide2").removeClass("hide2").addClass("hide3");
$(".hide3").removeClass("hide3").addClass("show");
问题是四个类最终都有show class,这不是我想要的。我只是希望show的类转换为hide1,hide1转换为hide2等。我怎样才能编写代码以便这四行全部一次发生,而不是一次发生一次?
答案 0 :(得分:2)
首先选择每个组,然后更改:
// read
var $show = $('.show');
var $hide1 = $('.hide1');
var $hide2 = $('.hide2');
var $hide3 = $('.hide3');
// write
$show.removeClass('show').addClass('hide1');
$hide1.removeClass('hide1').addClass('hide2');
$hide2.removeClass('hide2').addClass('hide3');
$hide3.removeClass('hide3').addClass('show');
答案 1 :(得分:1)
这样做,
function circulateClass(c){
var i, cl=[];
for(i=0;i<c.length;i++)
cl[c[i]]=$("."+c[i]);
for(i=0;i<c.length;i++)
cl[c[i]].removeClass(c[i]).addClass(c[(i+1)%c.length]));
}
circulateClass(["show","hide1", "hide2", "hide3"]);
答案 2 :(得分:1)
如果将类保存在这样的数组中:
var classes = ['show','hide1','hide2','hide3'];
你可以做这样的花哨的东西:
$('.'+classes.join(',.')).attr('class', function(i) {
return classes[i+1] || classes[0];
});
答案 3 :(得分:0)
只需更改订单......
$(".show").removeClass("show").addClass("hide1");
$(".hide3").removeClass("hide3").addClass("show");
$(".hide2").removeClass("hide2").addClass("hide3");
对于最后一个,按类名过滤:
$(".hide1").filter(function(){
return !$(this).hasClass('show');
}).removeClass("hide1").addClass("hide2");
答案 4 :(得分:0)
c = 0; // zero based index n (set initial one)
var $el = $( '#parent' ).find( 'div' );
$el.hide().eq( c ).show();
$( '#button' ).click( function() {
$el.hide().eq( ++c % $el.length ).show();
});