$(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); });