Jquery 使用相同的功能压缩多个条件

Jquery 使用相同的功能压缩多个条件,jquery,performance,Jquery,Performance,我有两个条件语句,它们的代码非常相似,它们从cookie中获取值,查找具有特定名称的复选框,并根据cookie值添加值 我的问题是,这看起来像是非常冗余的代码,在两个条件中包含这一点,而实际上它们做的是相同的事情,只是切换cookie的名称。我将如何压缩它,使其更紧凑,而不是多余的。我绞尽脑汁想弄明白这件事。谢谢你的帮助。我通过查看代码学习得更好,因此示例非常有用,非常受欢迎 $.fn.userLocator = function(opts) { if($.cookie('userLo

我有两个条件语句,它们的代码非常相似,它们从cookie中获取值,查找具有特定名称的复选框,并根据cookie值添加值

我的问题是,这看起来像是非常冗余的代码,在两个条件中包含这一点,而实际上它们做的是相同的事情,只是切换cookie的名称。我将如何压缩它,使其更紧凑,而不是多余的。我绞尽脑汁想弄明白这件事。谢谢你的帮助。我通过查看代码学习得更好,因此示例非常有用,非常受欢迎

$.fn.userLocator = function(opts) {

    if($.cookie('userLocation')){           
       var userLoc = []; 
       userLoc = $.cookie('userLocation').split(",");

       for(i=0; i!=userLoc.length;i++) {
        var checkbox = $("input[name='filter-location'][value='"+userLoc[i]+"']");
        checkbox.attr("checked","checked");            
       } 
    }

    if($.cookie('userServices')){
       var serviceLoc = []; 
       serviceLoc = $.cookie('userServices').split(",");

       for(i=0; i!=serviceLoc.length;i++) {
        var checkbox = $("input[name='filter-service'][value='"+serviceLoc[i]+"']");
        checkbox.attr("checked","checked");           
       } 
    }

}

为什么不将其移动到函数中

差不多

   function checkboxHelper(service)
    { 
     var servicevar = []; 
       servicevar = $.cookie(service).split(",");
       for(i=0; i!=servicevar.length;i++) {
        var checkbox = $("input[name='filter-service'][value='"+servicevar[i]+"']");
        checkbox.attr("checked","checked");           
       } 
    }
那么您可能需要调用该方法

checkboxHelper('userLocation')


调用时。
userLocator({cookiename:“您的cookie名称”})

如果我是你,我会尝试以下方法:

var cookieNames = {'location' : 'userLocation','service' : 'userServices'};

for(var key in cookieNames) {     
   var cookieName = cookieNames[key]; 
   if ($.cookies(cookieName)) { 
       var inputName = key;
       var valueList;
       valueList = $.cookies(cookieName).split(",");

       for(i=0; i!=valueList.length;i++) {
           var checkbox = $("input[name='filter-" + inputName + 
                            "'][value='"+valueList[i]+"']");
           checkbox.attr("checked","checked");            
       } 

      }
   }
}
var cookieNames = {'location' : 'userLocation','service' : 'userServices'};

for(var key in cookieNames) {     
   var cookieName = cookieNames[key]; 
   if ($.cookies(cookieName)) { 
       var inputName = key;
       var valueList;
       valueList = $.cookies(cookieName).split(",");

       for(i=0; i!=valueList.length;i++) {
           var checkbox = $("input[name='filter-" + inputName + 
                            "'][value='"+valueList[i]+"']");
           checkbox.attr("checked","checked");            
       } 

      }
   }
}