Javascript Zepto中的绑定事件

Javascript Zepto中的绑定事件,javascript,jquery,coffeescript,hotkeys,zepto,Javascript,Jquery,Coffeescript,Hotkeys,Zepto,我希望将jQuery中的以下插件转换为用于 现在我正在使用coffeescript,但我也将包括Javascript翻译。Zepto有一个用于keyup、keydown和keypress事件的绑定和事件API(请参阅),但是绑定一个新的自定义事件(在本例中为keyHandler)来接受这些事件有点棘手,我不太理解 我已经经历了这么多。我在最后一行遇到了一些问题,特别是对于jQuery的特殊定制处理程序,我认为Zepto别无选择 有人能帮我让Zepto在每次我写以下内容时都给keyHandler打

我希望将jQuery中的以下插件转换为用于

现在我正在使用coffeescript,但我也将包括Javascript翻译。Zepto有一个用于
keyup
keydown
keypress
事件的绑定和事件API(请参阅),但是绑定一个新的自定义事件(在本例中为
keyHandler
)来接受这些事件有点棘手,我不太理解

我已经经历了这么多。我在最后一行遇到了一些问题,特别是对于jQuery的特殊定制处理程序,我认为Zepto别无选择

有人能帮我让Zepto在每次我写以下内容时都给keyHandler打电话吗

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

因此,如果我甚至在网页上按f键,将该消息登录到控制台。

在您的代码中,您的意思是说:

$('*').bind('f', function() { console.log("pressed the 'f' key"); });
$('*').bind('keypress', 'f', function() {...});
您的要点不再可用,但查看原始插件,它取决于jQuery.event.special,这是Zepto不支持的一种功能

我建议使用类似Zepto.fn.bindHotkey(事件、键、函数)的东西扩展Zepto。例如:

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

请注意,我不会尝试将任何事件绑定到“*”。这会将事件附加到页面上的每个元素。因此,如果您选择了一个文本区域并键入“f”,则文本区域、其父级以及每个父级(直到顶部)都将执行事件处理程序。页面事件通常可以绑定到窗口或文档对象。

在代码中,您的意思是说:

$('*').bind('f', function() { console.log("pressed the 'f' key"); });
$('*').bind('keypress', 'f', function() {...});
您的要点不再可用,但查看原始插件,它取决于jQuery.event.special,这是Zepto不支持的一种功能

我建议使用类似Zepto.fn.bindHotkey(事件、键、函数)的东西扩展Zepto。例如:

Zepto.fn.bindHotkey = function(event, keys, func) {
    var handler = {data: keys, handler: func};
    keyHandler(handler);
    this.bind(event, handler.handler);
};
请注意,我不会尝试将任何事件绑定到“*”。这会将事件附加到页面上的每个元素。因此,如果您选择了一个文本区域并键入“f”,则文本区域、其父级以及每个父级(直到顶部)都将执行事件处理程序。页面事件通常可以绑定到窗口或文档对象