jquery变量语法

dna*_*irl 85 syntax jquery

我正在通过尝试理解其他人的代码来学习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

}
Run Code Online (Sandbox Code Playgroud)

我的理解是$指jQuery对象.那么,为什么把$$self$body?和是self一样的$self吗?

Dav*_*ing 215

$ self$几乎没有关系,在这种情况下,这是jQuery的别名.有些人喜欢将一个美元符号与变量放在一起,以区分常规变量和jQuery对象.

例:

var self = 'some string';
var $self = 'another string';
Run Code Online (Sandbox Code Playgroud)

这些被声明为两个不同的变量.这就像在私有变量之前加下下划线.

一种流行的模式是:

var foo = 'some string';
var $foo = $('.foo');
Run Code Online (Sandbox Code Playgroud)

这样,你知道$ foo后来在代码中是一个缓存的jQuery对象.

  • 非常清楚.我感谢您解释为什么有人可能会使用$ var约定. (10认同)

Que*_*tin 27

这是纯JavaScript.

没什么特别的$.它只是一个可以在变量名中使用的字符.

var $ = 1;
var $$ = 2;
alert($ + $$);
Run Code Online (Sandbox Code Playgroud)

jQuery只是将它的核心函数赋给一个名为的变量$.您为已this调用的局部变量分配的代码self以及调用jQuery的结果this作为参数调用全局变量$self.

它的丑陋,肮脏,混乱,但是$,self$self是发生在具有类似名称的所有不同的变量.


Bal*_*usC 9

不,肯定不是.它只是另一个变量名.在$()你所谈论的实际上是jQuery的核心功能.这$self只是一个变量.foo如果你愿意,你甚至可以将其重命名,这不会改变事情.在$(和_)是一个JavaScript标识符合法字符.

为什么这样做通常只是一些代码约定或避免与反向关键字发生冲突.我经常使用它$this如下:

var $this = $(this);
Run Code Online (Sandbox Code Playgroud)


Ric*_*ich 7

自我和自我是不一样的.前者是"this"指向的对象,后者是jQuery对象,其"范围"是"this"指向的对象.类似地,$ body不是body DOM元素,而是jQuery对象,其范围是body元素.