如何在jquery中替换Anchor标签的href中的一些文本

时间:2015-01-20 14:45:11

标签: javascript jquery html anchor

我很少使用网址,例如" http%3a // test.dev.test.com / posts / test test",我想将其替换为" http://test.dev.test.com/posts/test测试"在窗口加载函数,我已经尝试了下面的代码,但它没有更新锚标记的URL。

 $('a[href*="http%3a//"]').each(function () {
      this.href = this.attr('href').replace('http%3a//', 'http://');
    });

我不明白为什么它不起作用。请帮帮我。

EDIT ::

<a href="http%3a//test.dev.test.com/posts/test test" rel="bookmark" class="aChangeUrl" id="ctl00_lnkEntry">New test in March</a>

2 个答案:

答案 0 :(得分:5)

attr不是本机DOM方法,而是jQuery方法。

更改

  this.href = this.attr('href').replace('http%3a//', 'http://');

  this.href = $(this).attr('href').replace('http%3a//', 'http://');

请注意,您可以使整体更清洁,更简单:

$('a[href^="http%3a//"]').attr('href', function(_,s) {
     return s.replace('http%3a//', 'http://');
});

答案 1 :(得分:1)

尝试使用.attr()功能的接收器功能,让您的工作轻松,

$('a[href*="http%3a//"]').attr('href', function(i,href){
      return href.replace('http%3a//', 'http://');
});

您所面临的错误原因:

this.attr('href')
----^ Here comes the problem. 'this' will point a native javascript
object at this context and it doesn't have a member function called .attr().