如何使用 jQuery 或 Javascript 将字符串附加到 <a href="?

Posted

技术标签:

【中文标题】如何使用 jQuery 或 Javascript 将字符串附加到 <a href="?【英文标题】:how to append string to <a href=" with jQuery or Javascript? 【发布时间】:2013-07-18 18:39:27 【问题描述】:

我的元素如下,

<div id="pager">
<a href="/somepath/1">First</a>
<a href="/somepath/1">Previous</a>
<a class="" href="/somepath/1">1</a>
<a class="Current" href="/somepath/2">2</a>
<a class="" href="/somepath/3">3</a>
<a href="/somepath/3">Next</a>
<a href="/somepath/20">Last</a>
</div>

我希望它在浏览器中进行如下更改。

<div id="pager">
<a href="/somepath/1?a=text">First</a>
<a href="/somepath/1?a=text">Previous</a>
<a class="" href="/somepath/1?a=text">1</a>
<a class="Current" href="/somepath/2?a=text">2</a>
<a class="" href="/somepath/3?a=text">3</a>
<a href="/somepath/3?a=text">Next</a>
<a href="/somepath/20?a=text">Last</a>
</div>

这样我就可以将“a”数据值用于下一页。 任何人都可以给我代码,里面有追加

div id="pager" -> &lt;a&gt; -> href="

我想用另一个 onChange 事件删除添加的文本。

提前致谢

【问题讨论】:

【参考方案1】:

由于 jquery 被标记:

$('#pager a').each(function()
     this.href += '?a=text';
)

Vanilla JS 看起来像这样:

var a = document.getElementById('pager').getElementsByTagName('a'),
    length = a.length;

for(var i=0; i< length; i++)
    a[i].href += '?a=text';

【讨论】:

@Bondye .each 函数有什么问题? "+1 最后一个没有那个 .each() 函数...人们不理解 .each().."。您发布此评论的答案,您认为代码背后发生了什么?另外,.each() 更快:jsperf.com/each-vs-function @Karl-AndréGagnon 就我个人而言,我更喜欢将.attr() 与函数一起使用而不是.each(),因为我发现它更具可读性。但我当然不能与性能测试争论。 (我想知道 jQuery 中的一些优化是否可以解决这个问题?) @Blazemonger 好吧,这是个人偏好,因为我更喜欢使用.each(),所以我们不能就此争论:)@Bondye 它不是循环两次,它实际上与使用函数的结果相同(就像 Blaze 的回答一样)。这里 jquery 代码中的相关部分:for ( ; i &lt; length; i++ ) fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); . The only adding to the .each` 方式是一个附加的函数调用(这就是为什么每个都更快)。我认为您的评论对于 .addClass() 之类的功能更有意义,它无法循环遍历元素并在之后调用它 @Blazemonger 在旁注中,香草 js 是最慢的。知道为什么(我可能在代码中做错了什么)? @Karl-AndréGagnon 可能与this (source code)有关【参考方案2】:

.attr() 和许多 jQuery 函数一样,可以接受修改现有值的函数参数:

$('#pager a').attr('href',function(i,str) 
   return str + '?a=text';
);

【讨论】:

@Blazemonger 谢谢,我会接受 Karl-André Gagnon 的回答。您有 wow ans 以及如何使用另一个 onChange 事件删除添加的文本“?a=text”? "return str.split('?')[0];"应该这样做。 @Blazemonger 谢谢,:)【参考方案3】:
$('#pager a').each(function() 
   $(this).attr('href', $(this).attr('href') + '?a=text');
);

【讨论】:

谢谢,更新问题【参考方案4】:

只需使用attr property。示例:-

$("a").attr("href", "http://www.google.com/")

这样就可以了。

【讨论】:

【参考方案5】:
$("#pager").find("a").each(function()
var $this=$(this);
$this.attr("href",$this.attr("href")+"?a=text");
)

【讨论】:

【参考方案6】:

你可以使用attr方法

$('a').attr('href', '/somepath/1?a=text');

如果您想更改特定 &lt;a&gt;href,请给该 '' 一个唯一 ID,然后按如下方式更改其 href

$('#link').attr('href', '/somepath/1?a=text');

【讨论】:

【参考方案7】:

试试这个代码:

$('#pager a').each(function()
    this.href += '?a=text'
)

【讨论】:

以上是关于如何使用 jQuery 或 Javascript 将字符串附加到 <a href="?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JavaScript 或 jQuery 更改数组内对象的值?

如何使用 jquery 或 javascript 删除索引处的行? [复制]

如何使用 jQuery 或 JavaScript 设置底边距

如何使用 PHP 或 JavaScript/jQuery 禁用地址栏?

如何防止使用 jQuery 或 Javascript 进行双重提交?

当您使用 javascript 或 jquery 将鼠标悬停时,如何使图像或按钮发光?