Отменить привязку специального события нажатия клавиши

У меня есть вопрос, касающийся событий нажатия клавиш 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 ответа

Решение

Вы были на правильном пути. Это называется событиями в пространстве имен, т.е. маркировкой конкретных привязок с использованием <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");

Используйте пространство имен

http://docs.jquery.com/Namespaced_Events

Другие вопросы по тегам