jQuery中$(this)
和this
之间的区别是什么?为什么它们有时会给出相同的结果而其他时间的行为却不一样?
答案 0 :(得分:26)
$(this)
使用jQuery功能包装this
。
例如,此代码将失败:
$('.someDiv').onClick(function(){
// this refers to the DOM element so the following line would fail
this.fadeOut(100);
});
所以我们将this
包装在jQuery中:
$('.someDiv').onClick(function(){
// wrap this in jQuery so we can use jQuery fadeOut
$(this).fadeOut(100);
});
答案 1 :(得分:10)
$(this)
用jQuery函数装饰任何对象this
。典型的用例是this
引用DOM元素(例如,<div>
)。然后,编写$(this)
允许您使用<div>
上的所有jQuery API函数。
如果this
已经引用了jQuery对象 - 通常是jQuery装饰的DOM对象 - 那么调用$(this)
将无效,因为它已经被装饰了。
答案 2 :(得分:4)
如果在当前上下文中this
不是jQuery对象,则可以通过将其$()
包裹起来使其成为jQuery元素。当你的元素已经是jQuery表达式的结果时,那个情况下的this
已经是一个jQuery对象了。所以在这种情况下,它们的工作方式相似
答案 3 :(得分:3)
让你更好地了解一下,让自己成为像google chrome这样的某种调试者并做到这一点。
$('a').click(function(){
console.log(this); //DO
console.log($(this)); //JO
});
这将告诉你不同之处:)
答案 4 :(得分:2)
this
是一个javascript变量,只要你在一个连接到一个对象的函数内部就会创建。在这些情况下,this
指的是该对象。
$(this)
返回一个jQuery对象,您可以在其上调用jQuery函数,但仅适用于this
。
例如,如果为所有锚点设置单击处理程序:
$('a').click(function() {
console.log(this.href) ;
}) ;
然后this
指的是附加了click事件(函数)的锚点。
答案 5 :(得分:1)
$(this)==这个?有趣。
这不能通过DOM事件。
答案 6 :(得分:0)
在JavaScript中,这总是指正在执行的函数的“所有者”。使用$(this)将只包装所有者,以便所有jQuery操作都将被扩展并可用于它。
考虑:
$links = $('#content a');
$links.click(function() {
link = this;
$link = $(this); //jQuery wrapped object.
alert(link.getAttribute('href'));
alert($link.attr('href')); //we can use the attr() function from jQuery
});
它们通常给出相同的结果,因为所有者是相同的,只有当它被jQuery包装时它才能使用jQuery函数。