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] ) {}
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.
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.
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)