这是我的代码:
$(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?
答案 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。