Отмена привязки горячей клавиши JQuery внутри функции обработчика - PullRequest
1 голос
/ 31 августа 2011

Я использую JQuery с плагином hotkeys и не могу отменить привязку события. В частности, я пытаюсь отсоединить событие нажатия клавиши в методе, который был связан с этим нажатием клавиши.

Например:

$(document).bind('keydown', 'space', doStuff)

function doStuff() {
    alert("Doing stuff");
    $(document).unbind('keydown', 'space');
}

Я думаю, что я мог неправильно понять API вызова unbind - мне нужно предоставить третий параметр? В некоторой документации кажется, что я должен предоставить обработчик функции, который я изначально предоставил для привязки, в качестве этого параметра - но этот обработчик функции - та самая функция, от которой я вызываю unbind, поэтому у меня нет дескриптора? или я?

Обратите внимание, что до сегодняшнего дня я использовал:

$(document).unbind('keydown');

Это сработало нормально - мне нужно связать и развязать "пробел" в нескольких точках кода, и это помогло. Но теперь я также связывал ДРУГИЕ нажатия клавиш и обнаружил, что этот вызов (что неудивительно) отменял все нажатия клавиш для всех клавиш.

Так, как я могу отменить привязку некоторых или всех событий для определенного нажатия клавиши, используя плагин горячих клавиш или без него?

1 Ответ

1 голос
/ 31 августа 2011

Вам нужно использовать пространства имен.

$(document).bind('keydown.space', 'space', doStuff)

function doStuff() {
    alert("Doing stuff");
    $(document).unbind('keydown.space', 'space');
}
...