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
)