web-dev-qa-db-fra.com

syntaxe de variable jquery

J'apprends jQuery en essayant de comprendre le code des autres. J'ai couru dans ceci:

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

}

D'après ce que j'ai compris, $ fait référence à l'objet jQuery. Alors pourquoi mettre $ avec $self et $body? Et self est-il identique à $self?

84
dnagirl

$ self a peu à voir avec $, qui est un alias pour jQuery dans ce cas. Certaines personnes préfèrent mettre un signe dollar avec la variable pour faire la distinction entre les objets vars ordinaires et les objets jQuery.

exemple:

var self = 'some string';
var $self = 'another string';

Celles-ci sont déclarées comme deux variables différentes. C'est comme mettre un trait de soulignement avant des variables privées.

Un modèle un peu populaire est:

var foo = 'some string';
var $foo = $('.foo');

Ainsi, vous savez que $ foo est un objet jQuery mis en cache plus tard dans le code.

215
David Hellsing

C'est pur JavaScript.

$ n'a rien de spécial. C'est juste un caractère qui peut être utilisé dans les noms de variables.

var $ = 1;
var $$ = 2;
alert($ + $$);

jQuery assigne simplement sa fonction principale à une variable appelée $. Le code que vous avez affecte this à une variable locale appelée self et les résultats de l'appel de jQuery avec this en tant qu'argument d'une variable globale appelée $self.

C'est moche, sale, déroutant, mais $, self et $self sont des variables différentes qui portent des noms similaires.

27
Quentin

Non, ce n'est certainement pas. C'est juste un autre nom de variable. La $() dont vous parlez est en fait jQuery core function . Le $self n'est qu'une variable. Vous pouvez même le renommer en foo si vous voulez, cela ne change rien. Le $ (et _) sont des caractères légaux dans un identifiant Javascript.

Pourquoi cela est-il souvent dû à une convention de code ou pour éviter les conflits avec des mots clés inversés? Je l'utilise souvent pour $this comme suit:

var $this = $(this);
9
BalusC

self et $ self ne sont pas identiques. Le premier est l'objet désigné par "this" et le dernier est un objet jQuery dont le "scope" est l'objet désigné par "this". De même, $ body n'est pas l'élément DOM du corps, mais l'objet jQuery dont la portée est l'élément body.

7
Rich

Le dollarign en tant que préfixe dans le nom var est un usage du concept notation hongroise .

2
Jan