有没有更有效的方法来执行以下javascript操作?我很想减少这种情况,但想不出办法。谢谢!
var sizes = []; //This is a dynamic array from button clicks in an above menu that will include any of ['S','M','L','XL']
sizes = ['S','M'] // We'll use this as an example saying that the S and M buttons are active.
$('div').each(function() {
var t = $(this);
var mysizes = t.attr('class').split(/\s+/);
var length = sizes.length;
if(length == 0) {
t.show();
}
if(length == 1) {
if(t.hasClass(sizes[0])) {
t.show();
} else {
t.hide();
}
}
if(length == 2) {
if(t.hasClass(sizes[0]) || t.hasClass(sizes[1])) {
t.show();
} else {
t.hide();
}
}
if(length == 3) {
if(t.hasClass(sizes[0]) || t.hasClass(sizes[1]) || t.hasClass(sizes[2])) {
t.show();
} else {
t.hide();
}
}
if(length == 4) {
if(t.hasClass(sizes[0]) || t.hasClass(sizes[1]) || t.hasClass(sizes[2]) || t.hasClass(sizes[3])) {
t.show();
} else {
t.hide();
}
}
});
非常感谢任何帮助。
答案 0 :(得分:0)
做这样的事情
t.hide();
if(length > 0){
for (i = 0; i < length; ++i) {
for (j = 0; j <= i; ++j) {
if(t.hasClass(sizes[j])) {
t.show();
}
}
}
}
}
答案 1 :(得分:0)
类似这样的事情
$(document).ready(function(){
var sizes = [];
sizes = ['s','m'];
$("div").hide();
$.each(sizes, function(index, item) {
$("."+item).show();
});
});