Javascript $(“a”).href始终返回绝对URL,即使href属性是相对的
我试图重写我页面上的一些链接,这样我就可以使它们成为绝对链接,但前提是它们还不是绝对链接 我正在使用jQuery,并执行如下操作:Javascript $(“a”).href始终返回绝对URL,即使href属性是相对的,javascript,jquery,html,Javascript,Jquery,Html,我试图重写我页面上的一些链接,这样我就可以使它们成为绝对链接,但前提是它们还不是绝对链接 我正在使用jQuery,并执行如下操作: $("a").each(function() { if (!this.href.startsWith("http")) { this.href = "http://blah.com" + this.href } }); 出乎意料地(对我来说)this.href总是返回一个绝对URL(http://blah.com/somePath)
$("a").each(function() {
if (!this.href.startsWith("http")) {
this.href = "http://blah.com" + this.href
}
});
出乎意料地(对我来说)this.href
总是返回一个绝对URL(http://blah.com/somePath
)即使页面源显示URL是相对的(/somePath
)
如何获取href
的“真实”值(如页面源代码中所示)
我只在Firefox 19中尝试过这一点。这是因为锚元素将始终解析整个URL。您可以使用jQuery函数
attr
只获取属性的内容,如下所示
$('a').attr('href');
您需要使用属性值而不是href属性
$("a").each(function() {
var href = $(this).attr('href');
if (!href.startsWith("http")) {
$(this).attr('href', "http://blah.com" + href);
}
});
试试更简化的版本
$("a:not([href^=http])").attr('href', function (i, href) {
return "http://blah.com" + href
});
演示: