Javascript $(“a”).href始终返回绝对URL,即使href属性是相对的

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)

我试图重写我页面上的一些链接,这样我就可以使它们成为绝对链接,但前提是它们还不是绝对链接

我正在使用jQuery,并执行如下操作:

$("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
});
演示: