13

我有一个关于 jQuery 按键事件的问题。我有以下(工作)代码:

$(document).bind('keypress', function(event) {

    if ($('#myDiv').is(':visible')) {

        if (event.which == 102) {
            // ...do something...
        }

    }
    else {
        if (event.which == 102) {
            return;
        }
    }

});

我总是通过绑定另一个“结束”事件来“取消绑定”该事件。我知道我可以解除绑定,.unbind('keypress')但是我得到了更多的按键事件,当我解除绑定时,我的$(document).unbind('keypress')所有事件都会丢失。

我可以做一些像“keypress.102”这样的事情来只解开这个特定的“键”或者怎么做?!

4

2 回答 2

30

你走在正确的轨道上。这称为命名空间事件<event_name>.<namespace>,即使用(在您的情况下为“keypress.102”)标记特定绑定。

例如:

$(document).bind("keypress.key102", function(event) {
    if ($('#myDiv').is(':visible')) {

        if (event.which == 102) {
            // ...do something...
        }

    }
    else {
        if (event.which == 102) {
            return;
        }
    }
});

您可以稍后取消绑定,而不会影响其他绑定的按键事件:

$(document).unbind("keypress.key102");
于 2011-09-21T14:00:30.390 回答
1

使用命名空间事件。

http://docs.jquery.com/Namespaced_Events

于 2011-09-21T13:58:02.853 回答