2010-02-12 25 views
6

我想修改使用jQuery的链接。链接是动态生成的,我无法控制现有的HREF,因为它们是从第三方网站调用的。jQuery:将文本添加到现有的动态HREF

使用jQuery,我怎么可以改变此链接:

example.com/?one=1&two=1 

这样:

example.com/?one=1&two=1&thisisadded=true 

所以实质上增加&thisisadded=true到链接的结束?

需要改变的链接在他们自己的div中,其类别为my-link

回答

12
$('a.my-link').each(function() { 
    var href = $(this).attr('href'); 
    $(this).attr('href', href + '&thisisadded=true'); 
}); 

用一个jQuery选择器替换选择器,该选择器将匹配您网站上适当的链接,如果我的不够好。

+0

谢谢你的快速回答! 这对我有用,并正确添加了“&thisisadded = true”文本。 是否可以从链接中去除参数(“&preview = 1&TB_iframe = true”)? 我打开新标签中的链接,我不想/需要它们。 非常感谢, 詹姆斯 – James 2010-02-12 15:51:48

+0

我认为你应该接受这是正确的答案。 ;) – catandmouse 2011-09-15 07:28:07

2
var href = $(this).attr('href'); 
$(this).attr('href', href + '&thisisadded=true') 

显然,这样做是一个方面,其中this是你的链接

+1

'$(this)'一旦匹配所有需要修改的链接,就会以回调方式工作。但如果你只是这样称呼你的代码,它不会给你你期望的结果。 – RaYell 2010-02-12 14:46:09

+0

是的,这就是我所说的,你应该在这种情况下,这可以用在任何事件上,不是吗? – 2010-02-12 14:54:20

1

只需使用你的选择,和一个回调函数来attr。这将额外的部件添加到每一个匹配的链接:

$('a.my_link').attr('href', function(i, a){ return a + "&thisadded=true" }); 

当提供回调到attr方法中,第一参数是index和第二参数是原始attribute值。无论从回调中返回什么都会成为新的价值。

注意:此功能在jQuery 1.1和更高版本中可用。不要将此方法与接受jQuery 1.4中引入的回调的新批处理方法混淆。

+0

+1关于属性值的真棒提示! – Sampson 2010-02-12 15:19:45

+0

这是行得通的,但是当你点击其他链接时,它会不断将值附加到链接上。有任何想法吗? – Notflip 2014-01-08 10:47:20

相关问题