我正在通过理解别人的代码来学习jQuery。我遇到了这样的情况:
jQuery.fn.myFunc = function(options, callback) {
//stuff
jQuery(this)[settings.event](function(e) {
var self = this,
$self = jQuery( this ),
$body = jQuery( "body" );
//etc.
}
//more stuff
}
我的理解是$
指的是jQuery对象。那么为什么要把$
与$self
和$body
放在一起呢?以及self
是否与$self
相同
发布于 2009-12-17 02:30:34
这是纯JavaScript。
$
没有什么特别之处。它只是一个可以在变量名中使用的字符。
var $ = 1;
var $$ = 2;
alert($ + $$);
jQuery只是将它的核心函数赋给一个名为$
的变量。您的代码将this
赋值给一个名为self
的局部变量,并将调用jQuery的结果作为参数this
赋值给一个名为$self
的全局变量。
它是丑陋的,肮脏的,令人困惑的,但是$
,self
和$self
都是不同的变量,恰好有相似的名字。
发布于 2009-12-17 02:19:05
不,当然不是。它只是另一个变量名。您所说的$()
实际上是jQuery core function。$self
只是一个变量。如果您愿意,您甚至可以将其重命名为foo
,这不会改变事情。$
(和_
)是Javascript标识符中的合法字符。
这样做的原因通常只是一些代码约定,或者是为了避免与颠倒的关键字冲突。我经常在$this
中使用它,如下所示:
var $this = $(this);
发布于 2009-12-17 02:19:39
self和$self是不同的。前者是"this“指向的对象,后者是jQuery对象,其"scope”是"this“指向的对象。类似地,$body不是body DOM元素,而是jQuery对象,其作用域是body元素。
https://stackoverflow.com/questions/1916584
复制相似问题