取消绑定特殊按键事件

Mik*_*lik 12 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;
        }
    }

});
Run Code Online (Sandbox Code Playgroud)

我总是"绑定"事件,绑定另一个"结束"它.我知道我可以解开它,.unbind('keypress')但是我得到了更多的按键事件,当我解开这个时,我的$(document).unbind('keypress')所有事件都会丢失.

我可以做一些像"keypress.102"这样的东西来解开这个特定的"密钥",或者怎么办呢?!

Sha*_*hin 29

你走在正确的轨道上.这称为命名空间事件,即使用<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;
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

你可以在不影响其他绑定的按键事件的情况下取消绑定:

$(document).unbind("keypress.key102");
Run Code Online (Sandbox Code Playgroud)