this.href与$(this).attr(“href”)之间的区别

时间:2011-12-07 15:02:26

标签: javascript jquery

  

可能重复:
  this.href vs $(this).attr('href')

这是我的代码:

 $(function () {
        $("a.Delete").click(function () {
            console.log(this.href);
            console.log($(this).attr("href"));
            return false;
        });

这是我的链接

<a class="Delete" href="/Contact/Delete/10402">Delete</a>

这是我的输出:

http://localhost:59485/Contact/Delete/10402
/Contact/Delete/10402

为什么差异不是attr方法只获取属性。这不是this.href的作用吗? href属性是否在某种程度上是特殊的,它实际上为您提供了绝对URL?

3 个答案:

答案 0 :(得分:5)

第一个版本this.href正在直接从浏览器使用的javascript实现中读取属性。这为您提供了一个绝对URL,因为浏览器正在解释href属性并将其与当前主机URL相结合。

第二个,$(this).attr("href")将元素包装在jQuery对象中,然后访问该对象的href属性。对返回的值没有处理,因此它只是为您提供HTML中的确切字符串。

答案 1 :(得分:5)

HTML a元素具有href属性,其作用与document.location对象类似。它将返回[href]属性中指定的href的完全限定URL。包括协议,域等。

jQuery的attr方法按原样获取属性值。在幕后使用getAttribute(或等效物)。

如果你想在原始JS中获取文字属性值,你可以使用:

anchor.getAttribute('href');

如果你想在jQuery中获得完全限定的URL,你可以使用:

$('a').prop('href'); //jQuery 1.6+

答案 2 :(得分:2)

this.href为您提供绝对URI。

$(this).attr("href")为您提供href属性中的任何文本,该文本可能是也可能不是相对URI。