jQuery取消绑定大量事件

时间:2011-02-15 17:23:06

标签: jquery javascript-events event-handling bind 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

1 个答案:

答案 0 :(得分:5)

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

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

// etc.

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

$(document).unbind('.mySpace');

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