Отменить привязку специального события нажатия клавиши
У меня есть вопрос, касающийся событий нажатия клавиш 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");
Используйте пространство имен