Плагин горячих клавиш jQuery использует привязку

Я использую плагин горячих клавиш jQuery, написанный Джоном Резигом (Mr jQuery). Однако в нем используется bind, а bind теперь заменено на on, как указано в официальном API jQuery.

Стандартный код:

$(document).bind('keyup', 'alt+a', function(evt){...});

Я попытался изменить bind на on, но это не сработало. Есть ли обходной путь, или это не имеет значения?

Мне также интересно, всегда ли присоединение обработчика к документу будет лучшим способом.


person Nick    schedule 26.12.2012    source источник
comment
попробуйте $(document).on('keyup', null, 'alt+a', function(){}   -  person Jonathan de M.    schedule 26.12.2012


Ответы (2)


on возьмите дополнительный аргумент DOM, http://api.jquery.com/on/, поэтому напишите null.

пытаться

$(document).on('keyup', null, 'alt+a', function(){}
person Jonathan de M.    schedule 26.12.2012

Плагин переопределяет использование методов .bind и .unbind jQuery, как показано в этих строках.

jQuery.fn.bind = function(){
jQuery.fn.unbind = function(){

Мы можем просто сделать

jQuery.fn.on = function(){
jQuery.fn.off = function(){

Это тоже нужно изменить -

jQuery.fn.__bind__ = jQuery.fn.bind;
jQuery.fn.__unbind__ = jQuery.fn.unbind;

To

jQuery.fn.__bind__ = jQuery.fn.on;
jQuery.fn.__unbind__ = jQuery.fn.off;

Он используется несколько раз, поэтому замените все вхождения bind примечание -- не заменяйте __bind, только bind вхождений на on и unbind на off.

Или просто используйте код в моем jsFiddle

person Ohgodwhy    schedule 26.12.2012
comment
Спасибо за ответ, хотя моя копия плагина не упоминала ни bind, ни on, кроме как в строках реализации. Я пошел с ответом Джонатана. - person Nick; 26.12.2012