我有以下代码
$('a').click(function() {
var url= this.href;
alert(url);
});
这很好用,确定返回的结果是标记的url。
但是,如果我将上述代码更改为
$('a').click(function() {
var url= $(this).href;
alert(url);
});
结果未定义。
有人请帮忙清除这个吗?我正在敲打我的头......
答案 0 :(得分:19)
$(this)
创建一个包装this
的jQuery对象。本机DOM对象具有href
属性,但jQuery没有。
$(this).attr("href")
可行。
答案 1 :(得分:7)
this
是实际的dom元素,因此锚标记
$(this)
是一个jquery对象,用所有jquery goodness包装dom元素。
所以.href不是那个jquery对象的属性,但它是dom对象。
您可以使用$(this).attr('href')
来使用jQuery对象实现相同的功能。
答案 2 :(得分:2)
这是因为你在第一个例子中使用了javascript DOMElement,在第二个例子中使用了jQuery Object。 jQuery Object包含DOMElement并为您提供了许多功能。
您可以按以下方式访问网址:
$('a').click(function() { var url= $(this).attr('href'); alert(url); });
答案 3 :(得分:0)
区别在于DOM元素和jQuery选择。
您在上面给出的代码中的“this”是对链接的DOM元素的引用。 $(this)基于仅包含该链接的DOM元素创建jQuery选择。jQuery选择将以一点点性能为代价为您提供不同的功能。你的link元素有一个href属性(即你可以通过this.href访问的属性),而jQuery选择具有所有正常的jQuery属性&方法
为了获得链接目标,this.href绝对是可行的方法。它更简单,更快速,更简洁。
答案 4 :(得分:0)
很多好的答案,只是想补充说你也可以这样做:
$('a').click(function(e) {
alert($(this)[0].href);
});