2013-07-23 128 views
0

我正在尋找一種方法來使用選擇器篩選.on(「keyup」)事件中的結果。我希望能夠使用選擇器來確定哪個鍵被按下,而不是在處理程序中創建一個不斷擴展的if語句。我打算有很多鍵綁定。Jquery .on()鍵盤選擇器篩選

我想這樣做:

$(document).on("keyup", "#canvas", "key=27", MyEscHandler); 

而不必這樣做的:

$(document).on("keyup", "#canvas", function (e) { 
    if(e.keyCode == 27){ 
     MyEscHandler(e); 
    } 
    if(e.keyCode == 13){ 

    } //and a million more of these 
}); 

有沒有辦法做到這一點?或者我應該讓自己適應不斷擴大的開關。

+1

沒有什麼像內置到jQuery的。 –

+1

你在吹牛,我敢打賭,你的鍵盤上沒有一百萬個按鍵! – adeneo

+1

如果綁定了1,000,000個獨立的處理程序,而不是僅具有一個開關的處理程序,則可能會發現性能受損。 –

回答

5

自己寫這個很簡單。喜歡的東西:

$.fn.onKeyup = function(selector, keyCode, handler) { 
    $(this).on('keyup', selector, function(e) { 
     if (e.keyCode == keyCode) { 
      handler(e); 
     } 
    }); 
}; 

例子:

$(document).onKeyup('#canvas', 27, function() { 
    alert('Hi'); 
});