Jquery .on()keyup选择器过滤

时间:2013-07-23 00:45:20

标签: jquery jquery-selectors

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

有办法做到这一点吗?或者我应该让自己辞去不断扩大的转变。

1 个答案:

答案 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');
});