Связывающие события в Zepto - PullRequest
       22

Связывающие события в Zepto

2 голосов
/ 08 августа 2011

Я хочу преобразовать следующий плагин jquery.hotkeys.js плагин из jQuery для использования с Zepto .

Сейчас я используюcoffeescript, но я также включу перевод Javascript.Zepto имеет API привязки и событий для событий keyup, keydown и keypress (см. здесь ), но связывает новое пользовательское событие (в данном случае keyHandler) для принятияэти события немного сложны, что я не совсем понимаю.

Вот код , который я прошел до сих пор.У меня возникли небольшие проблемы с последней строкой - в частности, , когда jquery.hotkeys связывает событие keyHandler со специальным настраиваемым обработчиком jQuery, который, я считаю, у Zepto не имеет альтернативы.

Может ли кто-нибудь помочь мне заставить Zepto вызывать keyHandler каждый раз, когда я пишу следующее?

$('*').bind('f', function() { console.log("pressed the 'f' key"); });

Итак, если я даже нажму клавишу f на веб-странице, войдите в консоль этого сообщения.

1 Ответ

0 голосов
/ 12 октября 2011

В своем коде вы хотите сказать следующее?

$('*').bind('keypress', 'f', function() {...});

Ваша суть больше недоступна, но, глядя на оригинальный плагин, это зависит от типа jQuery.event.special, который является типомфункциональности, которую Zepto не поддерживает.

Я бы порекомендовал расширить Zepto чем-то вроде Zepto.fn.bindHotkey (события, ключи, func).Например:

Zepto.fn.bindHotkey = function(event, keys, func) {
    var handler = {data: keys, handler: func};
    keyHandler(handler);
    this.bind(event, handler.handler);
};

Как примечание, я бы не стал связывать какое-либо событие с '*'.Это прикрепляет событие к каждому элементу на странице.Таким образом, если у вас выделена текстовая область и введено «f», текстовая область, ее родитель и каждый родительский элемент до самого верха будут выполнять обработчик событий.События страницы обычно могут быть связаны с окном или объектом документа.

...