Quelle est la signification de "callback".appel(valeur, i, valeur)" en jQuery de chaque méthode?

each() méthode dans jQuery contient une telle instruction:

callback.call( value, i, value ) 

Je ne pouvais pas comprendre ce que cette déclaration signifie exactement.

Je sais ce que callback et call signifient mais je n'ai pas pu obtenir les arguments de l'appel de fonction: (value,i,value). Qu'est-ce que cela signifie?

L'instruction est utilisée dans un bloc de each(), mais ma question est indépendante du contexte.

À partir de la source jQuery:

for ( var value = object[0];
      i < length &&
      callback.call( value, i, value ) // <=== LOOK!
      !== false;
      value = object[++i] ) {}
25
demandé sur Mert Nuhoglu 2010-11-01 00:59:58

3 réponses

La méthode call existe sur toutes les fonctions en Javascript. Il vous permet d'appeler la fonction et donc à définir la valeur de this dans cette fonction.

function myFunc() {
    console.log(this);
}

myFunc.call(document.body);

Dans cet exemple, this dans myFunc sera document.body.

Le premier paramètre de call est la valeur à définir comme this; les paramètres suivants sont transmis à la fonction en tant que paramètres normaux. Donc, dans votre exemple:

callback.call( value, i, value )

, Ceci est équivalent à

callback(i, value)

Sauf que, dans le rappel, this est maintenant également mis à value.

43
répondu lonesomeday 2010-10-31 22:05:51

La méthode .each() appelle le rappel que vous lui transmettez avec l'élément (itération actuelle "cible") à la fois comme objet de contexte (la valeur de this) et comme deuxième paramètre.

Ainsi, dans l'une de ces fonctions:

$('.foo').each(function(i, elem) {
  var $this = $(this), $elem = $(elem);

Les variables $this et $elem, sont interchangeables.

Le premier argument de .call() est la valeur à laquelle this devrait être lié, si ce n'était pas clair. Le reste des arguments de .call() sont simplement passés en tant qu'arguments simples à la fonction.

1
répondu Pointy 2010-10-31 22:01:55

On appelle la callback méthode avec this définie sur value (le premier paramètre call) et avec les arguments i et value. (Les autres paramètres à call)

1
répondu SLaks 2010-10-31 22:02:17