0

我有一个充满链接的页面。我正在尝试在每个查询字符串的末尾添加一个查询字符串,以便:

http://www.example.com?x=1&y=2变成http://www.example.com?x=1&y=2&z=3

我想解析每个链接并添加它。我似乎找不到使用 jQuery 的优雅方法——任何帮助将不胜感激。

4

5 回答 5

2

像这样的东西应该工作

$('a').each(function() {
  $(this).prop('href',$(this).prop('href') + '&z=3');
})

循环每个a元素并添加z=3href属性的末尾

于 2013-02-08T11:10:28.333 回答
1
$('a[href^="http://www.example.com"]').prop('href', function(i, href){
   return href + '&z=3';
})
于 2013-02-08T11:13:19.503 回答
1

你可以这样做:

$("a").attr('href', function(c, b) {
     return b + "&z=3";
});
于 2013-02-08T11:11:12.407 回答
0

在添加键/值对之前,您需要检查 this.attr('href').indexOf('?') > -1 。如果没有'?你也需要添加它。

您最好使用 javascript 中的本机 href API 来解析 URL,然后将您需要的位添加到您需要修改的 URL 部分。

http://james.padolsey.com/javascript/parsing-urls-with-the-dom/

您可能还应该考虑使用“on”事件触发器(jQuery 最新)来执行此操作。对大量元素进行增强 DOM 会很慢,如果在 onLoad 钩子中添加会延迟页面显示。

$('body').on('click','a',function(e){
    // Prevent it jumping straight out
    e.preventDefault;
    // Define vars
    var href = this.href,
        qstr = 'a=b&bar=foo';
    // check for structure of url and add query string
    this.href += ((href.indexOf('?') > -1) ? '&': '?') + qstr;
    // jump
    return true;
});
于 2013-02-08T11:14:13.760 回答
0

这应该可以解决问题。

$('a').each(function(){
  this = $this;
  curr_url = this.attr('href');
  this.attr('href', 'curr_url' + '&z=3');
});
于 2013-02-08T11:11:48.563 回答