$(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函数。