$(this)和jQuery中的这个有什么区别?
$(this)
和jQuery中的$(this)
什么区别,为什么它们有时会给出相同的结果,而其他时候表现不同?
$(this)
用jQueryfunction包装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); });
$(this)
用jQuery函数装饰this
指向的任何对象。 典型的用例是为了引用DOM元素(例如,
)。 然后,编写$(this)
允许您使用该
上的所有jQuery API函数。
如果this
已经引用了一个jQuery对象 – 通常是一个jQuery装饰的DOM对象 – 那么调用$(this)
将没有任何效果,因为它已经被装饰了。
如果在当前上下文中,如果this
不是jQuery对象,则可以通过将其包装在$()
附近来使其成为jQuery元素。 当你的元素已经是jQuery表达式的结果时,在this
情况下, this
已经是一个jQuery对象。 所以在那种情况下,他们的工作方式相似
为了让你更好地理解,让自己成为像google chrome这样的某种调试者并做到这一点。
$('a').click(function(){ console.log(this); //DO console.log($(this)); //JO });
这将告诉你有什么区别:)
this
是一个javascript变量,只要你在一个连接到一个对象的函数内部就会创建它。 在这些情况下, this
指的是该对象。
$(this)
返回一个jQuery对象,您可以在其上调用jQuery函数,但仅适用this
。
例如,如果为所有锚点设置单击处理程序:
$('a').click(function() { console.log(this.href) ; }) ;
那么this
,指的是附加了click事件(函数)的锚。
$(this)==这个? 有趣。
这不能通过DOM事件传递。
在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函数。