如果或语句内jQuery $。每个值
问题描述:
有没有一种更有效的方法来做下面的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();
}
}
});
任何帮助将不胜感激。
答
像这样
$(document).ready(function(){
var sizes = [];
sizes = ['s','m'];
$("div").hide();
$.each(sizes, function(index, item) {
$("."+item).show();
});
});
答
做这样的事情
t.hide();
if(length > 0){
for (i = 0; i < length; ++i) {
for (j = 0; j <= i; ++j) {
if(t.hasClass(sizes[j])) {
t.show();
}
}
}
}
}
我不得不如此接近这一概念的东西,但无法得到它的工作。这是完美的,谢谢! – 2013-05-09 23:22:34