首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >jQuery -如何在变量中存储事件处理程序,并在以后将其绑定到对象?

jQuery -如何在变量中存储事件处理程序,并在以后将其绑定到对象?
EN

Stack Overflow用户
提问于 2012-08-18 18:47:43
回答 4查看 7.3K关注 0票数 3

基本上,我有一个"Delete Selected“按钮,只要没有选中任何复选框,这个按钮就会被禁用。只要用户选中一个复选框,我就想将一个单击事件处理程序绑定到此按钮。

当用户取消选中复选框而没有选中复选框时,我希望将完整的事件处理程序函数存储在一个变量中,并且只在选中复选框后立即绑定它。

问题是:如何将此事件处理程序函数存储在变量中,以便最容易地将其绑定到对象?

到目前为止,我只使用它来解除绑定一个事件处理程序(已经存在于这个对象上),然后再次绑定它,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(my-selector).unbind('click', eventHandler);
$(my-selector).bind('click', eventHandler);

...but永远不会反过来。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-18 18:56:27

我的建议是走一条不同的路线:绑定事件,并将它们绑定到页面的整个生命周期。在事件处理程序中,检查相关对象的状态并决定如何处理事件-这可能包括简单地忽略它。

这背后有两个理由:

  • 保持简单和可调试
  • 我见过一个事件的交付延迟了很长时间,以至于事件开始时的状态不再与事件交付时的状态相同:即:您的事件在您解除绑定之后被交付(因为它是在仍绑定的情况下启动的)
票数 5
EN

Stack Overflow用户

发布于 2012-08-18 18:56:10

我不确定我是不是明白了,你的意思是这样的吗?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// eventHandler function
var eventHandler = function(event) {

   ... // do something

}

// bind eventHandler function to jQuery collection
$(my-selector).bind('click', eventHandler);
$(my-selector).unbind('click', eventHandler);
票数 4
EN

Stack Overflow用户

发布于 2012-08-18 18:56:22

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var handlerFunc = function () {...}
$(my-selector).unbind('click', handlerFunc);
$(my-selector).bind('click', handlerFunc);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12021314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文