取消绑定特殊按键事件

时间:2011-09-21 13:56:48

标签: jquery keypress unbind

我有一个关于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”的操作,只解开这个特定的“密钥”或者如何解决这个问题?!

2 个答案:

答案 0 :(得分:29)

你走在正确的轨道上。这称为namespaced events,即使用<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");

答案 1 :(得分:1)

使用命名空间事件。

http://docs.jquery.com/Namespaced_Events