请查看最后的代码,看看我用来连接jQuery代码中的事件的方法。我更喜欢使用bind,因为你也可以看到我不喜欢在我的事件处理程序中使用匿名函数。
由于以下两个原因,我正在使用命名函数:
这有副作用 - 我需要使用bind的功能将数据传递给OnAddNewSnippetClick,因为在OnAddNewSnippetClick中,这现在引用导致事件触发的元素。
我一直把JavaScript视为二等公民,你可以看到我试图强迫我在我的ASP.NET MVC应用程序中使用的约定也在我的JavaScript上。我对多个事件处理程序的偏执是否被添加了错位?是否有更好的模式使用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);
}
};
答案 0 :(得分:2)
如果您对绑定的多个事件真的很偏执,可以使用live,它会根据选择器自动连接事件。
$(".stuff").live('click',function(){});
或
$("#element").one('click',function(){});
或
$("#element").unbind('click').bind('click',function(){});
但是,是的,看起来你正试图在javascript中做MVC,这可能是一种过度杀伤