“this”,“$ this”和“$(this)”之间有什么区别?
这三种forms有什么区别:
this $this $(this)
在典型的用法中,您通常会看到它们( $this
用法可能会有所不同):
-
this
– 指当前处理程序中的DOM元素,但在其他情况下可能完全是另一个对象,但始终是上下文。 -
$this
– 通常由var $this = $(this)
一个caching版本的jQuery包装版本以提高效率(或者在$(this)
以获得相同的许多情况)。 -
$(this)
– 元素的jQuery包装版本,所以你可以访问它的所有方法 (具体在$.fn
)。
-
this
是调用方法的对象 -
$this
是一个没有特别意义的variables名称不多的variables -
$(this)
调用命名不当的函数$
,并将其作为唯一的参数
在jQuery事件处理程序中:
-
this
是您为事件处理程序分配的DOM元素 -
$(this)
– 是从该元素创build的jQuery对象 -
$this
– 通常是一个保存$(this)
的结果的variables,
更普遍:
-
这里面的函数是指函数被调用的对象或原语。 当一个函数被用作构造函数时,它指向正在构build的新对象。 在任何函数之外,
this
是指全局对象(非严格模式下的window
)。您可以在MDN上find一个很好的详细解释 。
-
$这是一个variables名称。 在JavaScript中,variables名称可以以
$
开头。 有些人喜欢用它作为包含jQuery对象的variables的前缀: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()
的简写。 根据它的参数,这个函数可以做很多不同的事情 。
在jQuery的上下文中,“this”是调用方法的对象。 “$ this”确实是一个没有特殊含义的variables, '$(this)'将'this'传递给jQuery,只要'this'是一个DOM对象,jQuery就会返回一个与'this'关联的jQuery对象。
你的问题会更好地服务于更多的上下文。
不过,我假设你在一个元素事件的callback上下文中询问variables( click
举例)。
-
this
是您的处理程序的上下文(通常是DOM元素,在DOM事件处理程序的情况下) -
$this
通常用于存储$(this)
的结果 -
$(this)
返回包装this
的jQuery对象 – 请参阅jQuery文档以获取更多信息。
扩大了大卫所说的话:
-
$this
通常用于在当前范围内拥有this
对象的副本。 例如用var $this = this;
你可以在当前范围的任何地方使用variables$this
,并且始终能够引用该对象,否则,如果仅仅引用this
对象,就会改变this
…我个人不喜欢$this
命名约定,喜欢var parentScope
-
$(this)
是jQuery或PrototypeJs等框架使用的函数(var $ = function(){}
)。 它使用的原因是因为$
非常容易input,而不是someLongFunctionName
并且因为它通常在代码中多次调用,所以它越容易越短