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

これを自分で書くのはとても簡単です。何かのようなもの:

$.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');
});
于 2013-07-23T00:55:35.953 に答える