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

Javascript this.href vs$(this.attr(';href';),javascript,jquery,Javascript,Jquery,阅读本文后,我得出结论,使用this.href更有效 然而,当我尝试在我的一个项目中使用它时,我发现this.href不仅返回href,还附加了一个网站的url。例如,this.href将返回,$(this).attr('href')将仅返回tab-04 你可以在这里看到一个例子 $(this.attr('href')但是,它只返回我所需要的内容 我的问题是,如何重写(或执行必要的操作)this.href,使其只返回tab-04 编辑 Doug使用这个.getAttribute('href')d

阅读本文后,我得出结论,使用this.href更有效

然而,当我尝试在我的一个项目中使用它时,我发现this.href不仅返回href,还附加了一个网站的url。例如,
this.href将返回,$(this).attr('href')将仅返回tab-04

你可以在这里看到一个例子

$(this.attr('href')但是,它只返回我所需要的内容

我的问题是,如何重写(或执行必要的操作)this.href,使其只返回tab-04

编辑


Doug使用这个.getAttribute('href')

document.getElementById(yourAnchorId.href.split(“/”)

this.getAttribute('href')
[document.getElementById(yourAnchorId.href.split(“/”).length-1].split(“?”[0]

除了一个小的子字符串,这是什么意思

例如:

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

}

p.S测试

普通Javascript中的
href
属性将附加语义。它返回链接将指向的目标URL。无论它是如何编写的(绝对或相对URL)

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

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

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

this.getAttribute('href')

如果需要
href
属性(硬编码到HTML源代码中的属性)的确切值,请使用
$(this.attr('href')
)。如果您想要完全限定的URL,请使用
this.href
。如果您想使用this.href,因为它的效率很高,然后重写它,让它“做得更多”;“我得出结论,使用this.href更有效。”不,不是真的,但你肯定是。所谓的效率变化(如果它存在的话)被检测到的几率几乎为零。@Malvolio-直接访问DOM属性比使用jQuery的方法要快得多。与首先创建jQuery对象相比,它要快几个数量级。说它不可检测或为零是垃圾。@Malvlio-用户不会看到一个平凡的应用程序有什么不同,但他们会看到更大的应用程序有什么不同。当效率更高的代码编写起来更简单时(特别是当jQuery的一个声明是“写得更少”时),使用低效的代码也是一种糟糕的风格。嘿,Brian,我不能让你的东西正常工作,但是,你能不能提供一个到jsbin或jsfiddle的链接,让我看看你是怎么做到的?Yonathan Garti,你能不能,提供一个到jsbin或jsfiddle的链接,让我看看您是如何做到的?因为我似乎无法让你的东西发挥作用。至少还不支持。并非所有浏览器都支持outerHTML,href属性为。