1

我们正在为我们的网站使用以下 jQuery 代码:

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

但是,它当前的工作方式是,当您快速连续按下此键时,该操作不会连续执行,而是会忽略任何按键操作,直到当前操作完成。我们希望它使任何额外的按键都排队,并且在动作期间做出的任何按键都会导致动作也被执行,但只有在动作的最后一次迭代已经执行之后。

因此,例如,如果您按 9 次键,则该操作将执行 9 次,无论该操作是否在按键期间执行。我现在的方式是您可以按 9 次键,但对于 n <= 9,该操作只会执行 n 次,因为在执行操作时无法识别按键。

有任何想法吗?

编辑:根据 Hunter 的说法,我需要使用某种队列来对按键进行排队……我该怎么做呢?

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 回答