1

当サイトでは、次の jQuery コードを使用しています。

$(document).keydown(function (x) {
    if (x.keycode == 9) {
        // perform some action
    }
})

ただし、現在の動作方法では、このキーをすばやく連続して押すと、アクションが連続して実行されるのではなく、現在のアクションが完了するまでキーの押下が無視されます。追加のキー押下がキューに入れられ、アクション中にキーが押されるとアクションも実行されますが、アクションの最後の反復が実行された後にのみ実行されるようにしたいと考えています。

たとえば、キーを 9 回押すと、キーを押している間にアクションが実行されているかどうかに関係なく、アクションが 9 回実行されます。私が今持っている方法では、キーを 9 回押すことができますが、アクションの実行中にキーの押下が認識されないため、アクションは n <= 9 の場合は n 回しか実行されません。

何か案は?

編集: ハンターによると、キーの押下をキューに入れるには、ある種のキューを使用する必要があります...どうすればいいですか?

4

1 に答える 1

2
var inProgress = false;

$(document).keydown(function (x) {
    if (x.which == 9) {
        if (!inProgress)
        {
            inProgress = true;
            // perform some action
            inProgress = false;
        }
    }
})
于 2013-08-13T18:36:23.180 に答える