jQuery $ this vs $(this)在插件开发中

时间:2009-07-21 11:15:50

标签: jquery this keyword

我想知道为什么在这么多jquery插件中$(this)设置为指向$ this,这是一个例子,如果我在页面上包含以下两个插件:

(function($) {
   jQuery.fn.pluginOne = function() {
      return this.each(function() {
         $this = $(this); <--
         alert($this);
      });
   };
})(jQuery)

(function($) {
   jQuery.fn.pluginTwo = function() {
      return this.each(function() {
         $this = $(this); <--
         alert($this);
      });
   };
})(jQuery)

当我在dom上调用两个插件时:

$(document).ready({
   $('.myClass').pluginOne();
   $('.myOtherClass').pluginTwo();
});

第一个插件将从第二个插件获得$ this ...而我将$(this)指向本地var:

(function($) {
   jQuery.fn.pluginTwo = function() {
      return this.each(function() {
         var trigger = $(this); <--
         alert(trigger);
      });
   };
})(jQuery)

当然,一切都有效......

所以我的问题是......我什么时候应该使用$ this?

由于

3 个答案:

答案 0 :(得分:12)

$这是人们用来在变量中缓存实际jQuery对象$(this)的标准。

您可以按照自己的意愿调用它,有些人喜欢将其称为$ self。

e.g

var $self = $(this)

当您查看代码以识别它是jQuery对象而不是普通的dom对象时,它会有所帮助。

由于您只创建了一个jQuery变量实例,因此效果更好。

答案 1 :(得分:9)

$是Javascript中变量和函数名称的合法字符。如果您来自PHP,$仅用于表示变量(花了一些时间才能实现),那可能会让您感到困惑。

  • 在jQuery中,$是函数jQuery的别名,它是处理DOM选择的主要函数。 $("#header ul.menu")jQuery("#header ul.menu")相同。 $仅用于简洁。

  • this是Javascript中的特殊术语(不是jQ),表示当前元素(例如,您可能会看到this.submit()形式的表单)。

  • $(this)表示“使用Javascript的jQuery”调用this函数。

  • $this只是一个变量,因为$是一个有效字符。您可以将$this设置为您喜欢的任何值,它与Javascript的this完全无关。一般来说,我建议不要使用$作为变量名,以避免与jQuery函数混淆。但是,使用$var表示jQuery对象而不是普通的Javascript变量可能很有用。

答案 2 :(得分:2)

如果使用包装在jQuery对象中的元素执行许多不同的命令,那么将元素(作为包装集)仅获取一次并将其存储在局部变量中更为高效

var $this = $(this);
// then use $this in your function. 

请注意var用于本地范围$this