13

jQueryのkeypressイベントについて質問があります。私は次の(動作する)コードを持っています:

$(document).bind('keypress', function(event) {

    if ($('#myDiv').is(':visible')) {

        if (event.which == 102) {
            // ...do something...
        }

    }
    else {
        if (event.which == 102) {
            return;
        }
    }

});

私は常にイベントを「バインド解除」して、別のイベントを「オーバー」バインドします。バインドを解除できることはわかっています.unbind('keypress')が、キー押下イベントが増え、これをバインド解除すると$(document).unbind('keypress')すべてのイベントが失われます。

この特定の「キー」のバインドを解除するために「keypress.102」のようなことを行うことはできますか、またはこれをどのように行うことができますか?!

4

2 に答える 2

30

あなたは正しい方向に進んでいました。これは名前空間イベントと呼ばれます。つまり<event_name>.<namespace>、(この場合は「keypress.102」)を使用して特定のバインディングにラベルを付けます。

例えば:

$(document).bind("keypress.key102", function(event) {
    if ($('#myDiv').is(':visible')) {

        if (event.which == 102) {
            // ...do something...
        }

    }
    else {
        if (event.which == 102) {
            return;
        }
    }
});

後で、他のバインドされたキー押下イベントに影響を与えることなく、バインドを解除できます。

$(document).unbind("keypress.key102");
于 2011-09-21T14:00:30.390 に答える
1

名前空間付きイベントを使用します。

http://docs.jquery.com/Namespaced_Events

于 2011-09-21T13:58:02.853 に答える