2011-08-07 57 views
2

我正在寻找将以下插件jquery.hotkeys.js plugin从jQuery转换为与Zepto一起使用。Zepto中的绑定事件

现在我正在使用coffeescript,但我还会包括Javascript翻译。 Zepto有一个绑定和事件API,用于keyup,​​和keypress事件(请参见here),但绑定新的自定义事件(在本例中为keyHandler)接受这些事件有点棘手,但我不太明白。

Here's the code我到目前为止经历过。我在最后一行遇到了一些问题,特别是when jquery.hotkeys binds the keyHandler event到jQuery的特殊自定义处理程序,我相信Zepto没有其他选择。

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

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

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

回答

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',则文本区域,其父项以及到顶部的每个父项都将执行事件处理程序。页面事件通常可以绑定到窗口或文档对象。