我正在寻找一种方法来使用选择器来过滤.on(“keyup”)事件中的结果。我希望能够使用选择器来确定正在按下哪个键,而不是在处理程序中创建一个不断扩展的if语句。我计划有很多键绑定。
我想这样做:
$(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
});
有办法做到这一点吗?或者我应该让自己辞去不断扩大的转变。
答案 0 :(得分:6)
自己写这个很简单。类似的东西:
$.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');
});