执行功能后禁用密钥

时间:2014-09-04 01:09:14

标签: javascript jquery key settimeout

所以基本上我想要第一个键(" q")初始化setTimeouts,然后我想禁止它再次按下,同时setTimeouts正在运行,然后当setTimeouts结束时,重新允许再次按下它。

$(document).keydown(function(e) { 
    // if 'q' key is pressed, initalize setTimeouts
    if (e.keyCode == 81) {
        var rock = $('#rock');

        // disable 'q' key while setTimeouts are running          
        setTimeout(function () {
            rock.css('background-position', '-34px -0px');
            setTimeout(function () {
                rock.css('background-position', '-66px -0px');
                setTimeout(function () {
                    rock.css('background-position', '-96px -0px');
                }, 300);
            }, 300);
        }, 300);
        // re enable 'q' key when setTimeouts are done      
    }
});

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

在开始超时之前设置变量,并在完成时将其清除。

var q_enabled = true;
$(document).keydown(function(e) { 
    // if 'q' key is pressed, initalize setTimeouts
    if (e.keyCode == 81 && q_enabled) {
        q_enabled = false; // Disable Q key
        var rock = $('#rock');
        setTimeout(function () {
            rock.css('background-position', '-34px -0px');
            setTimeout(function () {
                rock.css('background-position', '-66px -0px');
                setTimeout(function () {
                    rock.css('background-position', '-96px -0px')
                    q_enabled = true; // Re-enable it
                }, 300);
            }, 300);
        }, 300);
    }
});