В принципе, я использую jQuery Hotkeys plugin г Resig, чтобы захватить и обработать ярлыки как ctrl+o
и т.д ...JQuery горячих клавиши ... не так глобальные
ОК, может быть, я не uderstand концепции, но я был под впечатлением, что ctrl+o
, вызванный где-либо внутри документа, будет захвачен обработчиком горячих клавиш документа.
Например, следующий код работает вообще ...
jQuery(document).bind('keydown', 'ctrl+o', fn);
Однако, с треском проваливается, если пользователь запускает горячую клавишу, когда внутри поля ввода.
Это работает только если я делаю следующее:
jQuery('body, input').bind('keydown', 'ctrl+o', fn);
который очень плохо для моего здоровья, так как она включает в себя связывание этого проклятому обработчику каждый раз, когда новое поле ввода добавляется в DOM. Хуже того, я понятия не имею, с чем нужно связываться в случае сложных виджетов, таких как CodeMirror.
Не знаю, если моя проблема имеет смысл, возможно, я использую неправильный подход? Я также попытался привязки к объектам, но это не сработало: window
, document
, body
, div[contains the whole page]
NB: Вы можете try it out here.
Возможно, вы можете использовать 'on()' здесь? поэтому он будет работать с каждым добавленным материалом. Или я чего-то не хватает? –
@Topener Я не хочу * просто * связывать все * текущие * входы, но любые * будущие * тоже. Красота добавления событий таким образом заключается в том, что вам не нужны глобальные переменные, чтобы содержать ваши функции обработки событий, вы просто делаете это один раз, когда это необходимо. – Christian
Но дело здесь не в том, что я добавляю события, но функциональность горячих клавиш должна делать сама. Я хочу сказать, что это горячая клавиша. Нажатие 'ctrl + s' в редакторе Netbeans дает тот же эффект от этого в списке проектов netbeans (в качестве примера). – Christian