lar*_*ryq 74 javascript jquery
我在jQuery 上看到了关于$(this)vs的一些关于vs的讨论$this,它们对我有意义.(有关示例,请参见此处的讨论.)
但是下面的代码片段,来自jQuery网站插件教程,展示了可链接性如何工作?
(function ($) {
$.fn.lockDimensions = function (type) {
return this.each(function () {
var $this = $(this);
if (!type || type == 'width') {
$this.width($this.width());
}
if (!type || type == 'height') {
$this.height($this.height());
}
});
};
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
$this上面代表什么?就在我认为我弄清楚的时候......
Joe*_*Joe 119
$this只是一个普通的变量.该$字符是变量名称中的有效字符,因此其$this作用与任何其他非保留变量名称相同.它在功能上与调用变量相同JellyBean.
Thi*_*ter 66
通常var $this = $(this);用来避免创建一个新的jQuery对象而不是必要的.如果是下面的代码,则只创建一个对象而不是两个/四个.它与可链接性完全无关.
你也可以调用它that,$thi$或其他任何东西(不要使用后者,但它很难看:p)因为$它只是一个简单的JavaScript字符,就像az一样.
jon*_*ohn 34
this在javascript(通常)表示对调用当前函数的对象的引用.这个概念有点模糊,jQuery尝试this在.each()循环结构中使用更友好的用户.
外的.each(),this表示该jQuery对象.lockDimensions被调用.
内部的.each()它代表当前迭代DOM对象.
通常,存储$(this)在局部变量中的目的是防止您$() 多次调用jQuery函数,如果必须多次使用它,缓存jQueryized this应该有助于提高效率.
$它只是一个有效的变量名字符,用作变量名的第一个字符,通常是为程序员排队它已经是一个jQuery对象(并且有相关的方法/属性可用).
这个问题实际上与链能力无关,但为了保持链能力,你应该返回,this以便可以添加其他函数调用,并保持this这些调用的含义.
eva*_*van 14
你可能忽略了这一行:
var $this = $(this);
Run Code Online (Sandbox Code Playgroud)
这里,$this只是一个包含值的变量$(this).您可以互换使用它,$(this)并且您不会反复进行相同的查找.
Bil*_*oon 10
$this = $(this)是一种缓存jQuery对象的方法.每次运行jQuery函数都很昂贵,因此存储输出允许您一遍又一遍地重复使用选择器而无需再次调用jQuery函数.
它只是填充$this变量$(this),所以你不必$(this)每次调用都要查找元素.它有更好的性能
var $this = $(this);
Run Code Online (Sandbox Code Playgroud)
这很简单:$this = $(this).它只是内部函数范围内使用的简写.在这种情况下,美元符号只是一个字符,它根本不涉及jQuery.这或许也同样被命名_this或xthis中,$仅仅是一个什么样的变量包含提醒.
它可能看起来毫无意义,但它消除了三个冗余的方法调用($()函数不是免费的),因此出于性能原因最有可能使用它.
在里面$.fn.lockDimensions,this是lockDimensions调用它的jQuery对象.
在里面.each,this现在引用循环的当前迭代中的DOMElement. $(this)将DOMElement包装在一个jQuery对象中,var $this = $(this);只是保存$(this)一个名为的变量$this,因此不需要多次调用jQuery构造函数(如果你要使用它$(this)).
$sign通常在JavaScript中的变量名之前使用,以区分常规值和jQuery对象.所以这里$this只获取$(this)返回jQuery对象的值this.$只是有效变量名称的一部分.