this.href vs $(this).attr('href')

时间:2011-08-08 01:37:25

标签: javascript jquery

阅读完本文net.tutsplus.com/tutorials/javascript-ajax/14-helpful-jquery-tricks-notes-and-best-practices/后,我得出结论,使用 this.href 效率更高。

但是,当我尝试在我的某个项目中使用它时,我看到 this.href 不仅返回href,还会附加网站的网址。例如<a href="tab-04"></a> this.href 将返回http://example.com/abc/tab-04 $(此).attr('href')将仅返回tab-04。

您可以在此处查看示例http://jsfiddle.net/UC2xA/1/

然而

$(this).attr('href')正是我所需要的,仅此而已。

我的问题是,如何重写(或做必要的) this.href 以便它只返回 tab-04

修改

this.getAttribute('href')

,道格,你是对的

3 个答案:

答案 0 :(得分:54)

普通Javascript中的href属性将附加语义。它返回链接将导致的目标URL。它的编写方式无关紧要(绝对或相对URL)。

当您使用$(this).attr("href")时,您将直接检索href属性的值,就像任何其他属性一样,因此它将返回HTML中呈现的确切值。

对于您的情况,最好使用$(this).attr("href")

如果您不想使用jQuery,还有另一种解决方案,只使用纯JavaScript:

this.getAttribute('href')

答案 1 :(得分:1)

document.getElementById(yourAnchorId).href.split("/")

[document.getElementById(yourAnchorId).href.split("/").length - 1].split("?")[0];

答案 2 :(得分:1)

什么只是一个小子串?

例如:

function getHref(a)
{
    var i = a.outerHTML.indexOf('href="')+6;
    return a.outerHTML.substring(i, a.outerHTML.indexOf('"', i));

}

P.S TESTED!