我有一个充满链接的页面。我正在尝试在每个查询字符串的末尾添加一个查询字符串,以便:
http://www.example.com?x=1&y=2变成http://www.example.com?x=1&y=2&z=3
我想解析每个链接并添加它。我似乎找不到使用 jQuery 的优雅方法——任何帮助将不胜感激。
我有一个充满链接的页面。我正在尝试在每个查询字符串的末尾添加一个查询字符串,以便:
http://www.example.com?x=1&y=2变成http://www.example.com?x=1&y=2&z=3
我想解析每个链接并添加它。我似乎找不到使用 jQuery 的优雅方法——任何帮助将不胜感激。
像这样的东西应该工作
$('a').each(function() {
$(this).prop('href',$(this).prop('href') + '&z=3');
})
循环每个a
元素并添加z=3
到href
属性的末尾
$('a[href^="http://www.example.com"]').prop('href', function(i, href){
return href + '&z=3';
})
你可以这样做:
$("a").attr('href', function(c, b) {
return b + "&z=3";
});
在添加键/值对之前,您需要检查 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;
});
这应该可以解决问题。
$('a').each(function(){
this = $this;
curr_url = this.attr('href');
this.attr('href', 'curr_url' + '&z=3');
});