2010-10-08 135 views
35

是什么这三种形式之间的差别:

this 
$this 
$(this) 

回答

48

典型使用你通常会看到他们像这样(的$this使用可能会有所不同):

  • this - 指的是你目前的处理程序的DOM元素,但是这可能在其他情况下完全是另一个对象,但它始终是上下文。
  • $this - 通常由var $this = $(this)创建一个缓存版本的jQuery包装版本以提高效率(或在多数情况下关闭$(this)以获得相同的结果)。
  • $(this) - 元素的jQuery包装版本,因此您可以访问all its methods(具体在$.fn中的版本)。
+1

在jQuery出名之前,我记得看到'$ this'被用来引用父范围对象,有点像'var that'。不过,我看到jQuery fenomena如何影响它的含义。 – 2010-10-08 10:30:11

+0

这个答案假设我们处在一个事件处理程序中:Alisey的回答更一般 – meouw 2010-10-08 11:49:24

+0

@meouw - 我不认为它假设,我立即告诫它:“但这可能是完全在其他情况下的另一个对象。 *当你看到这一点时,大部分时间都是在那里(我们主要是事件驱动),但不是唯一的地方。 – 2010-10-08 11:52:58

30
  • this是在其上方法被调用的对象
  • $this是没有特殊含义
  • $(this)名为不佳变量调用不佳命名功能$this作为其唯一参数
+1

lol。短而干净。我喜欢+1。 – 2010-10-08 10:16:06

+0

他们的变量名称被选中...很差。 – PaulJWilliams 2010-10-08 10:17:01

+15

我不同意你的#2,它是一个完全有效的名称,它是用来做什么的,它是'this'的jquery包装版本......你会怎么称呼它?因为jQuery对象的'$ var'是一个广泛使用的约定?对于#3,你建议什么替代品?有几个图书馆选择了这个(jQuery,MooTools,Prototype,Microsoft的....)。 – 2010-10-08 10:19:46

1

在jQuery的上下文中,'this'是调用方法的对象。 '$ this'确实是一个没有特殊含义的变量名称不多的变量。 '$(this)'将'this'传递给jQuery,只要'this'是一个DOM对象,jQuery就会返回一个与'this'关联的jQuery对象。

0

您的问题会更好地服务于更多的上下文。

但是我假设你在元素事件回调的上下文中询问变量(例如click)。

  • this是处理程序的上下文中(通常的DOM元素,在DOM事件处理程序的情况下)
  • $this通常用来存储$(this)
  • $(this)结果返回jQuery对象那包装this - 请参阅jQuery documentation了解更多信息。
0

扩大在什么大卫说:

  • $this通常用于有this对象的副本在当前范围内。例如对于var $this = this;,您可以在当前范围内的任意位置使用变量$this,并始终能够引用该对象,否则该对象只会简单地用this引用。我个人不喜欢的$this命名规则,更喜欢像var parentScope

  • $(this)是像jQuery或PrototypeJs一些框架使用的功能(var $ = function(){})。使用它的原因是因为$是很容易的类型,而不是someLongFunctionName因为它是在代码通常被称为许多时候,它更容易有它是尽可能短

9

在jQuery的事件处理:

  • this - 是您分配事件处理程序
  • $(this) DOM元素 - 距离Tha创建一个jQuery对象吨元件
  • $this - 典型地,可变保持的$(this)

结果更一般地:

  • 函数内部是指物体或基元的函数被调用上。当一个函数被用作构造函数时,它指向正在构建的新对象。在任何函数之外,this引用全局对象(window处于非严格模式)。

    您可以找到good detailed explanation on MDN

  • $ this是一个变量名称。在JavaScript中,变量名称可以以$开头。有些人喜欢用它作为前缀变量包含jQuery的对象:

    var body = document.body; // no prefix for a plain DOM object 
    var $body = jQuery('body'); // prefix for the same object wrapped in jQuery 
    var $this = $(this); 
    
  • $(本)是一个函数调用,其中$是一个函数名,this是它的参数:

    var $ = alert; 
    $(this); // [object Window] 
    

    $本身没有任何特殊的含义。但jQuery将$()函数定义为jQuery()的简写。根据它的参数,这个函数可以做many different things

相关问题