2009-05-06 6 views
1

Veuillez regarder le code à la fin pour voir la méthode que j'ai utilisée pour câbler des événements dans mon code jQuery. Je préfère utiliser bind et comme vous pouvez également le voir, je n'aime pas utiliser les fonctions Anonymous dans mes gestionnaires d'événements.Modèle pour le câblage d'événements à l'aide de jQuery

Je suis en utilisant des fonctions nommées à cause des deux raisons suivantes:

  1. Lisibilité
  2. appels multiples à mes WireUpGlobalCommandClickEvents ne seront pas ajouter plusieurs gestionnaires d'événements au clic de mon lien.

Cela a un effet secondaire - je dois transmettre des données à l'OnAddNewSnippetClick en utilisant la fonctionnalité de liaison, puisque dans OnAddNewSnippetClick, il se réfère maintenant à l'élément qui a causé au feu de l'événement.

J'ai toujours traité JavaScript comme un citoyen de seconde classe et comme vous pouvez le voir, j'essaie de forcer les conventions que j'utilise dans mon application ASP.NET MVC sur mon JavaScript ici aussi. Est-ce que ma paranoïa à propos de plusieurs gestionnaires d'événements est mal placée? Existe-t-il un meilleur modèle pour câbler les gestionnaires d'événements à l'aide de 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); 
    } 
}; 

Répondre

2

si vous êtes vraiment paranoïaque à propos de plusieurs événements être lié, vous pouvez utiliser en direct, qui fils auto up événements basés sur le sélecteur.

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

ou

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

ou

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

Mais oui, vous dirait que vous essayez de faire MVC en javascript qui est probablement surpuissant

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

Questions connexes