0

有没有更有效的方法来做下面的 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();
            }
        }
    });

任何帮助将不胜感激。

4

2 回答 2

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();
                }
            }
        }
    }
}
于 2013-05-09T22:57:21.497 回答
0

像这样的东西

$(document).ready(function(){
   var sizes = []; 
   sizes = ['s','m'];
   $("div").hide();
   $.each(sizes, function(index, item) {
       $("."+item).show();
   });
});    

jsfiddle

于 2013-05-09T23:02:48.907 回答