【问题标题】:this.href vs $(this).attr('href')this.href 与 $(this).attr('href')
【发布时间】:2011-10-22 01:35:58
【问题描述】:

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

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

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

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

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

编辑

道格,你是对的

this.getAttribute('href')

【问题讨论】:

  • 如果您想要 href 属性(硬编码到 HTML 源代码中的属性)的确切值,请使用 $(this).attr('href')。如果您想要完全限定的 URL,请使用 this.href
  • 如果你打算使用 this.href 因为它的效率,然后重写它让它'做更多';它有点违背了目的。
  • -1 表示“我得出的结论是使用 this.href 更有效。”不,不是,但你肯定是optimizing too early。声称效率变化的可能性(即使存在)几乎为零。
  • @Malvolio - 直接访问 DOM 属性比使用 jQuery 的方法快得多。与首先创建 jQuery 对象相比,它要快几个数量级。说它不可检测或 nil 是垃圾。
  • @Malvlio - 用户不会看到琐碎应用程序的差异,但他们会看到更大的应用程序。当更高效的代码更容易编写时(特别是当 jQuery 的主张之一是“少写”时),使用低效代码也是一种不好的风格。

标签: javascript jquery


【解决方案1】:

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

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

【讨论】:

  • 嗨,Brian,我无法让你的东西正常工作,但是,能否请你提供一个 jsbin 或 jsfiddle 的链接,让我看看你是怎么做到的?
【解决方案2】:

什么只是一个小子字符串?

例如:

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

}

P.S 测试过!

【讨论】:

  • Yonathan Garti,能否请您提供 jsbin 或 jsfiddle 的链接,以便我看看您是如何做到的?因为我似乎无法让你的东西正常工作。至少还没有。
  • 不是所有浏览器都支持outerHTML,href属性是。
【解决方案3】:

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

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

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

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

this.getAttribute('href')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-02
    • 2015-09-06
    • 2018-09-17
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多