$(this)和this之间有什么区别?

时间:2010-09-15 23:11:47

标签: javascript jquery this

我有以下代码

$('a').click(function() {
var url= this.href;
alert(url);
});

这很好用,确定返回的结果是标记的url。

但是,如果我将上述代码更改为

$('a').click(function() {
var url= $(this).href;
alert(url);
});

结果未定义。

有人请帮忙清除这个吗?我正在敲打我的头......

5 个答案:

答案 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);
});