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