jQuery:如何将文本添加到现有的动态HREF中

6

我正在尝试使用jQuery修改链接。这些链接是动态生成的,我无法控制现有的HREF,因为它们是从第三方网站调用的。

使用jQuery,我如何将链接从这个更改为:

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

转换为:

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

所以基本上是在链接的结尾添加&thisisadded=true

需要更改的链接位于其自己的

内,类名为my-link

3个回答

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

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


谢谢您的快速回答!这对我有用并且正确地添加了“&thisisadded=true”文本。是否有可能将链接中的参数(“&preview = 1&TB_iframe = true”)删除?我正在新标签页中打开链接,我不想/不需要它们出现在那里。非常感谢,詹姆斯 - James

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

显然,这是在一个上下文中进行的,其中this是您的链接


1
$(this)会在回调函数中起作用,一旦您匹配了所有需要更改的链接。但是,如果您只是像这样调用代码,它不会给您期望的结果。 - RaYell
是的,这也是我提到的,你应该在那个上下文中,这可以用于该元素上的任何事件,不是吗? - Teja Kantamneni

1

只需使用您的选择器和回调函数来 attr。这将向每个匹配的链接添加额外的部分:

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

在向 attr 方法提供回调函数时,第一个参数是 index,第二个参数是原始的 attribute 值。从回调函数返回的任何内容都将成为新值。

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


这个是可以工作的,但是当你点击其他链接时,它会不断地将该值附加到链接中。有什么想法吗? - Miguel Stevens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接