Jquery查询字符串匹配并更改选定的Href

时间:2016-08-23 15:10:44

标签: jquery query-string

我试图在查询字符串中找到一个参数并处理两件事。 示例网址 - http://domainname.com?name=y&track=1&promo=true

  1. 将这些查询字符串附加到页面上的所有网址 - 我相信这很好。
  2. 更改包含特定字符串的网址的href网址本身,然后附加查询字符串。这些href以不同的方式存在,例如href标签,onclick inside image tag。

    <a href="http://externaldomain.com/?a=88">link</a>, <img src="a.jpg" onclick = document.location.href="http://externaldomain.com/?a=88" />

  3. 到目前为止代码做的第一件事

    var querystring = window.location.search.substring(0);
    var newurl = "http://changetothisdomain.com/"; //for second criteria
    jQuery(document).ready(function() {
      jQuery('a[href]').attr('href', function(index, value) {
        if ((querystring.indexOf("promo=true") > 0) && (value.indexOf('#') != 0)) {
          return value + querystring;
        }
      });
    });
    

    我有这个value.indexOf('#')!= 0所以带#的网址没有改变,因为它是用于jquery标签的。添加参数会影响这些。对于第二件事,我想检查是否在查询字符串中有promo = true,然后还检查href是否有“a = 88”然后将href更改为“newurl”并附加查询字符串。

    谢谢!

1 个答案:

答案 0 :(得分:0)

看看这个 - 这不是微不足道的

&#13;
&#13;
var querystring = "?blabla=bla&promo=true&bla=bla"; //  window.location.search;
var newurl = "http://changetothisdomain.com/"; //for second criteria

function changeURL(value) {
  if (value.indexOf('#') == 0) return value;
  return (value.indexOf("a=88") == -1 ? value : newurl) + querystring;
}

function changeString(value) {
  if (value.indexOf('#') == 0) return value;
  var match = value.match(/href=([^"]*)/);
  var url = (match.length > 0) ? match[1] : "";
  var replace = url.indexOf("a=88") == -1 ? url : newurl;
  var qString = (replace.indexOf("?") !=-1)?querystring:"&"+querystring.substring(1);
  if (url.indexOf("'") != -1) {
    replace = replace.replace(/'/g, "");
    replace = "'" + replace + qString + "'";
  } else if (url.indexOf('"') != -1) {
    replace = replace.replace(/"/g, "");
    replace = '"' + replace + qString + '"';
  }
  return value.replace(url, replace);
}

$(function() {
  if (querystring.indexOf("promo=true") != -1) {
    $('a[href]').attr('href', function(index, value) {
      return changeURL(value);
    });
    $('img').attr('onclick', function(index, value) {
      return changeString(value);
    });
  }
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<a href="http://externaldomain.com/?href=true&a=88">link</a>,
<img src="a.jpg" onclick="document.location.href='http://externaldomain.com/?img=true&a=88'" />
<a href="http://externaldomain.com/?href=true&a=89">link</a>,
<img src="a.jpg" onclick="document.location.href='http://externaldomain.com/?img=true&a=88'" />
&#13;
&#13;
&#13;