jQuery解除大量事件绑定

4

我正在使用 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个回答

6

jQuery为事件提供了创建命名空间的可能性,示例如下:

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

// etc.

你可以这样通过.unbind()方法来删除与命名空间相关的所有事件:
$(document).unbind('.mySpace');

我不知道你提到的插件,但你应该查看文档或者更好的是源代码。如果它被良好设计,你应该能够使用jQuery事件命名空间来实现这个目的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接