Veuillez regarder le code à la fin pour voir la méthode que j'ai utilisée pour connecter des événements dans mon code jQuery. Je préfère utiliser bind et comme vous pouvez le voir, je n'aime pas utiliser des fonctions anonymes dans mes gestionnaires d'événements.
J'utilise des fonctions nommées pour les deux raisons suivantes :
- La lisibilité
- Les appels multiples à mon WireUpGlobalCommandClickEvents n'ajouteront pas plusieurs gestionnaires d'événements au clic de mon lien.
Cela a un effet secondaire - Je dois passer des données à OnAddNewSnippetClick en utilisant la fonctionnalité de bind, car dans OnAddNewSnippetClick, this se réfère maintenant à l'élément qui a déclenché l'événement.
J'ai toujours traité JavaScript comme un citoyen de seconde classe et comme vous pouvez le constater, j'essaie d'imposer les conventions que j'utilise dans mon application ASP.NET MVC à mon JavaScript ici aussi. Ma paranoïa concernant l'ajout de gestionnaires d'événements multiples est-elle infondée ? Existe-t-il un meilleur modèle pour connecter des gestionnaires d'événements en utilisant jQuery ?
SettingsController.prototype = {
OnAddNewSnippetClick: function(event) {
event.data.SettingsController.SettingsAjaxHelper.AddNewSnippet(event.data.Parameter, event.data.SettingsController);
},
WireUpGlobalCommandClickEvents: function(parameter) {
$('#addSnippetLink').bind("click", { SettingsController: this, Parameter: parameter }, this.OnAddNewSnippetClick);
}
};