I'm new to javascript/jQuery. Is there a way to make this code shorter?
else if (players == 6) {
$('#box1').addClass("col-md-4");
$('#box1').removeClass("col-md-6");
$('#box2').addClass("col-md-4");
$('#box2').removeClass("col-md-6");
$('#box3').addClass("col-md-4");
$('#box3').removeClass("col-md-6");
$('#box4').addClass("col-md-4");
$('#box4').removeClass("col-md-6");
$('#box4').removeClass("col-md-offset-4");
$('#box5').addClass("col-md-4");
$('#box5').removeClass("col-md-6");
$('#box6').addClass("col-md-4");
$('#box6').removeClass("col-md-6");
$('#box1').show();
$('#box2').show();
$('#box3').show();
$('#box4').show();
$('#box5').show();
$('#box6').show();
}
You can combine the selectors and apply each method with chaining.
else if (players == 6) {
$('#box1,#box2,#box3,#box4,#box5,#box6')
.addClass("col-md-4")
.removeClass("col-md-6")
.show();
}
Or use attribute starts with the selector.
else if (players == 6) {
$('[id^="box"]')
.addClass("col-md-4")
.removeClass("col-md-6")
.show();
}
else if (players == 6) {
$('.box')
.addClass("col-md-4")
.removeClass("col-md-6")
.show();
}
when you could give all your boxes a class like .box you could do this (preferred)
$('.box').addClass("col-md-4").removeClass("col-md-6").show();
or you could do this
$('#box1, #box2, #box3').addClass("col-md-4").removeClass("col-md-6").show();
in stead of:
$('#box1').addClass("col-md-4");
$('#box1').removeClass("col-md-6");
$('#box2').addClass("col-md-4");
$('#box2').removeClass("col-md-6");
$('#box3').addClass("col-md-4");
$('#box3').removeClass("col-md-6");
$('#box4').addClass("col-md-4");
$('#box4').removeClass("col-md-6");
$('#box4').removeClass("col-md-offset-4");
$('#box5').addClass("col-md-4");
$('#box5').removeClass("col-md-6");
$('#box6').addClass("col-md-4");
$('#box6').removeClass("col-md-6");
$('#box1').show();
$('#box2').show();
$('#box3').show();
$('#box4').show();
$('#box5').show();
$('#box6').show();
You can do the following:
else if (players == 6) {
$('[id^="box"]').removeClass("col-md-6").addClass("col-md-4").show();
}
or you can use attribute like
else if (players == 6) {
$('[data-box="true"]').removeClass("col-md-6").addClass("col-md-4").show();
}
All those elements should have data-box="true" attribute.
Also, you could use some dummy class with your slectors and do the following:
else if (players == 6) {
$('.dummy').removeClass("col-md-6").addClass("col-md-4").show();
}