jQuery取消绑定大量事件

jjc*_*son 4 jquery bind event-handling javascript-events unbind

我正在使用jquery.hotkeys.js编写一个带有两种键盘模式的程序,我看到一些减速并在解除所有keydown事件绑定时闪烁.有一个更好的方法吗?

function bindAll() {
    //bind all keystroke events
    $(document).bind('keydown','a', function(evt) {
    //...
    }
    $(document).bind('keydown','b', function(evt) {
    //...
    }
    //etc...
}

function unbindAll() {
     $(document).unbind('keydown');
     return true;
} //end unbinding all keystrokes
Run Code Online (Sandbox Code Playgroud)

jAn*_*ndy 5

jQuery为您提供了为事件创建名称空间的可能性.看起来像:

$(document).bind('keydown.mySpace', function(evt) {
});
$(document).bind('keyup.mySpace', function(evt) {
});

// etc.
Run Code Online (Sandbox Code Playgroud)

您可以.unbind()添加到命名空间中的所有事件,如下所示:

$(document).unbind('.mySpace');
Run Code Online (Sandbox Code Playgroud)

我不知道你提到的插件,但你应该看看文档甚至更好的源代码.如果它设计得很好,你应该能够为此目的使用jQuery事件命名空间.