2

我希望将以下插件jquery.hotkeys.js 插件从 jQuery 转换为与Zepto一起使用。

现在我正在使用咖啡脚本,但我也会包含 Javascript 翻译。Zepto 有一个用于keyupkeydown和事件的绑定和事件 API keypress(参见此处),但是绑定一个新的自定义事件(在本例中为keyHandler)以接受这些事件有点棘手,我不太明白。

这是我到目前为止所经历的代码。我在最后一行遇到了一些麻烦 - 特别是当 jquery.hotkeys 将 keyHandler 事件绑定到我相信 Zepto 无法替代的 jQuery 的特殊自定义处理程序时。

每次我写以下内容时,任何人都可以帮助我让 Zepto 调用 keyHandler 吗?

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

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

4

1 回答 1

0

在您的代码中,您的意思是说以下内容吗?

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

您的要点不再可用,但查看原始插件,它取决于 jQuery.event.special,这是 Zepto 不支持的一种功能。

我建议使用 Zepto.fn.bindHotkey(events, keys, func) 之类的东西来扩展 Zepto。例如:

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

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

于 2011-10-12T17:49:45.977 回答