if或jquery $ .each值中的语句

时间:2013-05-09 22:43:45

标签: jquery if-statement each performance

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

非常感谢任何帮助。

2 个答案:

答案 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();
   });
});    

jsfiddle