如何使用jQuery比较字符串

时间:2014-05-29 12:48:54

标签: jquery

我有这个功能,我想确保传入的参数不重复。 由于未知原因,此函数运行两次。因此我必须找到重复的参数并忽略它,否则将其添加到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);
    });          
}

1 个答案:

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