Пожалуйста, посмотрите на код в конце, чтобы увидеть метод, который я использовал для связывания событий в моем коде jQuery. Я предпочитаю использовать bind, и, как вы можете видеть, я не люблю использовать анонимные функции в моих обработчиках событий.
Я использую именованные функции по следующим двум причинам:
- читаемость
- Множественные вызовы моих WireUpGlobalCommandClickEvents не добавят несколько обработчиков событий к нажатию моей ссылки.
У этого есть побочный эффект - мне нужно передать данные в OnAddNewSnippetClick, используя функциональность bind, поскольку в OnAddNewSnippetClick это теперь относится к элементу, вызвавшему событие.
Я всегда относился к JavaScript как к гражданину второго сорта, и, как вы можете видеть, я пытаюсь навязать здесь и свои соглашения, которые я использую в своем приложении ASP.NET MVC. Неужели моя паранойя из-за того, что несколько обработчиков событий добавляются неуместно? Есть ли лучший шаблон для подключения обработчиков событий с использованием 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);
}
};