J'implémente une structure de classe dans jQuery, mais j'ai des problèmes lorsque j'essaie d'appeler certaines de mes fonctions.Comment puis-je conserver le contrôle du mot-clé this lors de l'extension de prototypes dans jQuery?
Voici comment la structure est la configuration:
MyClass = function(name) {
this.init(name);
}
$.extend(MyClass.prototype, {
init: function(theName) {
this.myFunction(); // works
$('.myclass').each(function(){
this.myFunction(); // doesn't work
});
},
myFunction = function(){}
});
Le problème que je vais avoir est que lorsque je tente d'appeler un de mes fonctions (par exemple, myFunction()
) à l'intérieur d'un bloc jQuery (comme le each()
construire ci-dessus), j'obtiens l'erreur "myFunction() is not a function
".
Je pense que cela a quelque chose à voir avec le mot-clé this
qui change sa signification dans le bloc jQuery, mais je ne suis pas sûr. Toute aide serait appréciée!
@Bergi cette question est donc un double d'une question qui a été publié plus de 4 ans après? Agréable. –
Oui, cette question de 2013 est une référence canonique, expliquant le problème que vous avez également eu et toutes les solutions (sic!) À elle largement. S'il vous plaît ne vous sentez pas offensé, vous n'avez rien fait de mal :-) Je ne fais que diriger les futurs lecteurs à la canonique. – Bergi
Je ne suis pas offensé, et je comprends vraiment! ;) Il suce juste que la copie autour de cette fonctionnalité donne l'impression que l'OP posait négligemment une question qui avait déjà une réponse - "Cette question a déjà une réponse ici:" "Cette question a déjà été posée et a déjà une réponse. " Juste un peu bizarre. –