$(" a")。href总是返回绝对URL,即使href属性是相对的

时间:2014-02-06 12:32:28

标签: javascript jquery html

我试图重写我页面上的某些链接,以便让它们绝对,但前提是它们不是绝对的。

我正在使用jQuery,并做这样的事情:

$("a").each(function() {
    if (!this.href.startsWith("http")) {
        this.href = "http://blah.com" + this.href
    }
});

出乎意料地(对我而言)this.href总是返回绝对网址(http://blah.com/somePath),即使网页来源显示网址是相对的(/somePath)。

我怎样才能得到真实的' href的值(如页面来源中所示)?

我只在Firefox 19中试过这个。

2 个答案:

答案 0 :(得分:4)

这是因为Anchor元素将始终解析整个URL。您可以使用jQuery函数attr来获取属性的内容,如此

$('a').attr('href');

答案 1 :(得分:2)

您需要使用属性值而不是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
});

演示:Fiddle