0

我正在寻找一种方法来使用选择器来过滤 .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
 });

有没有办法做到这一点?或者我应该让自己接受一个不断扩大的开关。

4

1 回答 1

6

It's pretty simple to write this yourself. Something like:

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

Example:

$(document).onKeyup('#canvas', 27, function() {
    alert('Hi');
});
于 2013-07-23T00:55:35.953 回答