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

How to replace some of text in href of Anchore tag in jquery

我很少有像 "http%3a//test.dev.test.com/posts/test test" 这样的 URL 锚点,我想用 window 加载函数上的“http://test.dev.test.com/posts/test 测试”替换它,我试过下面的代码为此,它不会更新锚标记的 URL。

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

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

编辑::

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

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://');
});

尝试使用.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().