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

我有以下代码

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

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

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

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

结果是未定义的。

有人请帮忙清除这个吗? 我正在为此敲打我的脑袋….

$(this)创建一个包装this的jQuery对象。 本机DOM对象具有href属性,但jQuery不具有。

$(this).attr("href")可以工作。

在你的情况下,这是实际的dom元素,所以锚标签

$(this)是一个jquery对象,它包含了所有jquery良好的dom元素。

所以.href不是该jquery对象的属性,但它是dom对象。

您可以使用$(this).attr('href')来使用jQuery对象实现相同的function。

这是因为您在第一个示例中使用了javascript DOMElement,在第二个示例中使用了jQuery Object。 jQuery Object包含DOMElement并为您提供了许多function。

您可以访问以下url:

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

区别在于DOM元素和jQuery选择。

您在上面给出的代码中的“this”是对链接的DOM元素的引用。 $(this)基于仅包含该链接的DOM元素创建jQuery选择。

jQuery选择将以一点性能为代价为您提供不同的function。 你的link元素有一个href属性(即你可以通过this.href访问),而jQuery选择有所有正常的jQuery属性和方法。

为了获得链接目标,this.href绝对是要走的路。 它更简单,更快速,更简洁。

很多好的答案,只是想补充说你也可以这样做:

 $('a').click(function(e) { alert($(this)[0].href); });