javascript - 如何将事件处理程序存储在变量中并稍后将其绑定(bind)到对象?

标签 javascript jquery events event-handling jquery-events

基本上我有一个按钮 Delete Selected,只要没有选中复选框,它就会被禁用。一旦用户选中复选框,我想将点击事件处理程序绑定(bind)到此按钮。

由于可能发生用户取消选中复选框而未选中任何复选框的情况,我想将完整的事件处理程序函数存储在一个变量中,并且仅在选中复选框时才绑定(bind)它。

问题是:我怎样才能将这个事件处理函数存储在一个变量中,以便最容易地将它绑定(bind)到一个对象?

直到现在我只用它来取消绑定(bind)一个事件处理程序(已经存在于这个对象上)然后再次绑定(bind)它,就像这样:

$(my-selector).unbind('click', eventHandler);
$(my-selector).bind('click', eventHandler);

...但绝不会反过来。

最佳答案

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

这背后有两个基本原理:

  • 保持简单和可调试
  • 我曾看到事件的交付延迟了很长时间,以至于事件启动时的状态不再与事件交付时的状态相同:即:您的事件已交付,在您解除绑定(bind)后(因为它已启动)同时仍然绑定(bind))

关于javascript - 如何将事件处理程序存储在变量中并稍后将其绑定(bind)到对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12021314/

相关文章:

javascript - 何时在 Mongoose 中使用 new ObjectId ("string-id")而不是 ObjectId ("string-id")?

javascript - jQuery : Passing a method directly to the on event handler isn't working

JavaFX Node.setOnMouseEntered/Exited 的不稳定行为

.net - 如何使单个事件处理程序处理ALL Button.Click事件?

javascript - 使用scrollOverflow时fullPage.js不检测动态生成内容的高度

javascript - 如何自动向下滚动聊天框 (div)?

javascript - ng-repeat 因对象数组而失败

javascript - 如何通过自动完成点击来集中注意力?

javascript - 哪种方法更适合结果集的 ListView 和 GridView

javascript - 谷歌分析事件跟踪