“this”,“$ this”和“$(this)”之间有什么区别?

时间:2010-10-08 10:12:53

标签: javascript jquery

这三种形式有什么区别:

this
$this
$(this)

6 个答案:

答案 0 :(得分:50)

典型的用法中,您通常会看到它们($this用法可能会有所不同):

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

答案 1 :(得分:31)

  • this是调用方法的对象
  • $this是一个命名不佳的变量,没有特殊含义
  • $(this)调用命名不佳的函数$,其中this为唯一参数

答案 2 :(得分:9)

在jQuery事件处理程序中:

  • this - 是您为
  • 分配事件处理程序的DOM元素
  • $(this) - 是从该元素
  • 创建的jQuery对象
  • $this - 通常是一个包含$(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)是一个函数调用,其中$是函数名,this是其参数:

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

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

如果有更多背景信息,您的问题会更好。

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

  • this是处理程序的上下文(对于DOM事件处理程序,通常是DOM元素)
  • $this通常用于存储$(this)
  • 的结果
  • $(this)返回包装this的jQuery对象 - 有关详细信息,请参阅jQuery documentation

答案 5 :(得分:0)

扩展大卫所说的话:

  • $this通常用于拥有当前范围中this对象的副本。例如,对于var $this = this;,您可以在当前范围内的任何位置使用变量$this,并且始终能够引用该对象,如果仅使用this引用则会更改...我个人不喜欢$this命名约定,更喜欢var parentScope

  • 之类的内容
  • $(this)是一些函数(var $ = function(){}),由jQuery或PrototypeJs等框架使用。使用它的原因是因为$非常容易键入而不是someLongFunctionName,并且因为它通常在代码中被称为很多次,所以它更容易被缩短