$(this)和jQuery中的这个有什么区别?

时间:2010-09-10 14:41:03

标签: jquery jquery-selectors this

jQuery中$(this)this之间的区别是什么?为什么它们有时会给出相同的结果而其他时间的行为却不一样?

7 个答案:

答案 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函数。