1 votes

Schéma pour connecter des événements en utilisant jQuery

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 :

  1. La lisibilité
  2. 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);
    }
};

2voto

Chad Grant Points 16571

Si vous êtes vraiment paranoïaque à propos de plusieurs événements liés, vous pouvez utiliser live, qui relie automatiquement les événements en fonction du sélecteur.

 $(".stuff").live('click',function(){});

ou

$("#element").one('click',function(){});

ou

$("#element").unbind('click').bind('click',function(){});

Mais oui, on dirait que vous essayez de faire du MVC en JavaScript, ce qui est probablement exagéré

http://docs.jquery.com/Events/live#typefn

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X