我很少使用网址,例如" 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>
答案 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().