这是我的代码:
$(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吗?
第一个版本this.href是直接从浏览器使用的javascript实现中读取属性.这为您提供了一个绝对URL,因为浏览器正在解释href属性并将其与当前主机URL相结合.
第二种$(this).attr("href")是将元素包装在jQuery对象中,然后访问href该对象的属性.返回的值没有处理,因此它只是为您提供HTML中的确切字符串.
HTML a元素具有href与document.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)