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

Chr*_*ris 3 javascript jquery events event-handling javascript-events

基本上我有一个"删除所选项"按钮,只要没有选中复选框就会被禁用.一旦用户选中了复选框,我就想将click事件处理程序绑定到此按钮.

由于用户可能会取消选中复选框并且没有选中,我想将完整的事件处理函数存储在变量中,并且只在选中复选框时将其绑定.

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

直到现在我只使用它来取消绑定事件处理程序(已存在于此对象上),然后再次绑定它,如下所示:

$(my-selector).unbind('click', eventHandler);
$(my-selector).bind('click', eventHandler);
Run Code Online (Sandbox Code Playgroud)

......但从来没有反过来.

Eug*_*eck 5

我的建议是采用不同的方法:绑定事件并将它们绑定到页面的整个生命周期.在事件处理程序中,检查相关对象的状态并决定如何处理事件 - 这可能包括忽略它.

这背后有两个基本原理:

  • 保持简单和可调试
  • 我看到一个事件的传递延迟了很长时间,事件开始时的状态不再与事件传递相同:即:你的事件在你解除绑定之后被交付(因为它是在被绑定时启动的) )