2013-07-23 226 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'); 
});