jQuery替换href中特定的文本

3
如何仅更改以下链接的值中的文本“us-test”,而无需替换整个链接,我当前使用的方法会替换整个链接,我猜这与 .attr 的功能有关,我猜我可以通过使用 .find 或其他东西来实现这一点,但我真的不知道该怎么做,请问有人能帮助我吗?谢谢。
$(document).ready(function(){ 
 $("#box1").click(function(){
 $("a.mylink").attr("href", "http://google.com");
   });  

 $("#box2").click(function(){
  $("a.mylinktwo").attr("href", "http://yahoo.com"); 
 });   


<a class="mylink" href="http://google.com/en/get.php?chrome=us-test">Test</a>

通过替换整个属性,您正在正确地执行操作。 - rkw
所以我猜我不能只替换我想要的特定文本,我问这个问题是因为我将使用一堆链接,我宁愿通过更改文本来减少文件中的内容...这样看起来会更加清洁,而不是有20个长链接。 - donvitto
3个回答

16

这取决于你想要达到什么目的。我不建议过于复杂化事情,如果你能在预先确定要访问的URL,则替换整个URL可能是最好的选择,并且最容易看出正在发生什么。

要替换字符串的部分,可以使用replace()方法。

var url = $('.mylink').attr('href')
url = url.replace('us-test', 'replaced-text')
$('.mylink').attr('href', url)

您还可以将正则表达式作为匹配参数传递。


1
谢谢Rob,正是我在寻找的。不过有一个问题,"$ ('.mylink').attr('href', url)"是什么意思? :b - donvitto
设置要更新的链接的 href 属性。 - Rob Taylor

2

您的意思是:


$(".mylink").click(function (e) {
  //防止默认行为
  e.preventDefault();
  //获取链接地址并替换us-test
  var href = $(this).attr("href").replace(/us-test/, "");
  //或者替换成其他内容
  var newHref = $(this).attr("href").replace(/us-test/, "somethingelse");
  //更新链接地址
  $(this).attr("href", newHref);  
});


嗯...我尝试了这个,但似乎无法使其工作,我想问题出在我的一端,不管怎样还是谢谢Sudhir... - donvitto

1
请使用以下代码:
$(document).ready(function() {
 var link = $('a').attr('href');
var equalPosition = link.indexOf('=');

var sptext= link.substring(equalPosition + 1);

 var s=link.replace(sptext,"replaced-text");

  $('.mylink').attr('href', s);




});

请查看这个Fiddle http://jsfiddle.net/W3pmu/1/ 希望能有所帮助...


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