2011-08-07 62 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',則文本區域,其父項以及到頂部的每個父項都將執行事件處理程序。頁面事件通常可以綁定到窗口或文檔對象。