我无法找到解决这个问题的最佳方法。我有条件设置cookie 基于是否存在选择器。在代码中还有其他地方我会做类似的事情 选择器存在。如果选择器存在,我要么添加“nba”或“nba-”(注意破折号) 页面上的属性。我正在尝试删除尽可能多的代码,因为还有其他五个地方 我有类似的地方,我正在添加其他属性。我也觉得有更好的方法 接近这一点而不必写很多次:
if($(".userLocation").length > 0){
我正在敲打着如何压缩这个,但无法弄清楚这一点。请包含代码示例 我这样学得最好。
if($(".userLocation").length > 0){
var user_cookie = {
name: 'nba-user-profile',
options: {
path: '/',
expires: 365
}
};
} else {
var user_cookie = {
name: 'user-profile',
options: {
path: '/',
expires: 365
}
};
}
if($(".userLocation").length > 0){
$('header').attr("href","#nba-city");
$('header').attr("href","#nba-state");
} else {
$('header').attr("href","#city");
$('header').attr("href","#state");
}
if($(".userLocation").length > 0){
$('header').attr("title","#nbacity");
$('header').attr("title","#nbastate");
} else {
$('header').attr("title","#city");
$('header').attr("title","#state");
}
答案 0 :(得分:2)
可能效率不高,但您可以尝试类似
的内容function existThenDo(selector, successCallBack, failCallback){
if($(selector).length){
successCallBack();
} else {
failCallback();
}
}
用法
existThenDo(".userLocation", function(){
$('header').attr("title","#nbacity");
$('header').attr("title","#nbastate");
}, function(){
$('header').attr("title","#city");
$('header').attr("title","#state");
});
答案 1 :(得分:1)
这样的事情怎么样?创建前缀变量。如果选择器存在,请将其设置为前缀值,否则将其保留为空。然后只需附加任何内容:
var prefix = '';
if($(".userLocation").length > 0)
prefix = 'nba-';
var user_cookie = {
name: prefix + 'user-profile',
options: {
path: '/',
expires: 365
}
};
$('header').attr("href","#" + prefix + "city");
$('header').attr("href","#" + prefix + "state");
由于您不必在if / else块中重复相同的操作,因此将必要的代码减少了一半。