gpt4 book ai didi

javascript - 使用 jQuery 连接事件的模式

转载 作者:行者123 更新时间:2023-11-30 18:58:47 24 4
gpt4 key购买 nike

请查看最后的代码,了解我一直用来在我的 jQuery 代码中连接事件的方法。我更喜欢使用 bind,您也可以看到我不喜欢在我的事件处理程序中使用匿名函数。

由于以下两个原因,我正在使用命名函数:

  1. 可读性
  2. 对我的 WireUpGlobalCommandClickEvents 的多次调用不会将多个事件处理程序添加到我的链接的点击中。

这有一个副作用 - 我需要使用绑定(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);
}
};

最佳答案

如果您真的对绑定(bind)多个事件感到疑惑,您可以使用 live,它会根据选择器自动连接事件。

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

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

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

但是,是的,看起来您正尝试在 javascript 中执行 MVC,这可能有点矫枉过正

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

关于javascript - 使用 jQuery 连接事件的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/831939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com