我有这个功能,我想确保传入的参数不重复。 由于未知原因,此函数运行两次。因此我必须找到重复的参数并忽略它,否则将其添加到href。
示例我第一次运行该函数时有<a href="xyz.com/index.php?route=product/category&path=151&bfilter=2-Brand[18 And East]">ABC</a>
。
之后,当它第二次运行时,在函数内部,它将比较(bfilter=[OPQ]
)的参数。
如果OPA已经存在,则忽略它,否则继续添加到href。
我该怎么做?
function addFilteredAttrURL(params){
$('.cmpro-accordion a').each(function() {
var href = this.href;
if (href.indexOf('?') != -1) {
href = href + params;
} else {
href = href + params;
}
$(this).attr('href', href);
});
}
答案 0 :(得分:1)
这可能不是唯一的问题,但是您的网址生成无效,因为您的查询字符串缺少?
(如果没有现有的查询字符串参数)。
代码应为:
function addFilteredAttrURL(params){
$('.cmpro-accordion a').each(function() {
var href = this.href;
if (href.indexOf('?') != -1) {
href = href + params;
} else {
href = href + '?' + params;
}
$(this).attr('href', href);
});
}
如果在没有任何现有参数的情况下运行(第一次?),那么您将在没有?
的情况下附加它们,并且它不会被视为查询字符串。这可能会导致您的参数检查第二次失败。
在没有看到其余代码的情况下,很难判断它是否也应该插入&
(当不是&#39;?&#39;)
即
function addFilteredAttrURL(params){
$('.cmpro-accordion a').each(function() {
var href = this.href;
if (href.indexOf('?') != -1) {
href = href + '&' + params;
} else {
href = href + '?' + params;
}
$(this).attr('href', href);
});
}