this.href和$(this).attr("href")之间的区别

ek_*_*_ny 3 javascript jquery

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

这是我的代码:

 $(function () {
        $("a.Delete").click(function () {
            console.log(this.href);
            console.log($(this).attr("href"));
            return false;
        });
Run Code Online (Sandbox Code Playgroud)

这是我的链接

<a class="Delete" href="/Contact/Delete/10402">Delete</a>
Run Code Online (Sandbox Code Playgroud)

这是我的输出:

http://localhost:59485/Contact/Delete/10402
/Contact/Delete/10402
Run Code Online (Sandbox Code Playgroud)

为什么差异不是attr方法只获得属性.这不是this.href的作用吗?href属性在某种程度上是特殊的,它实际上给你绝对的URL吗?

Ror*_*san 5

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

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


zzz*_*Bov 5

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

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

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

anchor.getAttribute('href');
Run Code Online (Sandbox Code Playgroud)

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

$('a').prop('href'); //jQuery 1.6+
Run Code Online (Sandbox Code Playgroud)