在第n次点击事件中,javascript按钮按键被触发n次

时间:2014-11-14 00:47:08

标签: javascript jquery

我正在尝试构建一个有开始按钮的游戏。按下此按钮后,游戏开始。该游戏有多个键盘按键事件。问题是当第n次按下开始按钮并且游戏开始第n次运行时,对于每个键盘按键事件,程序按下n次按键。以下是代码。

$(document).ready(function(){

   $('.start_game').click( function(){

        $(document).keydown(function(e){ // left button
            if (e.keyCode == 37 && game_over_flag == 0) 
            { 
                if(a!=0)    
                {
                    remove_obj(a,b);
                    a=a-1;
                    placement(a,b); 

                    check_collision(a,b);
                }
            }
        });

   });

}); 

因此,当第二次按下开始游戏然后按下箭头按钮一次时,需要两次点击。对于第三次开始游戏按钮点击,每一个按键击中三次,单击,我需要单次执行.Plz帮助。

2 个答案:

答案 0 :(得分:2)

每次单击该按钮,都会添加一个新的事件处理程序。所以你需要解开它。

$('.start_game').click( function () {

    $(document).off("keydown.game").on("keydown.game", function (e) {
    ...

或者更好的是不要在click事件中绑定,使用标志。

$(document).ready(function(){

    var isActive = false;
    $('.start_game').click( function(){
        isActive = true
    });

    $(document).keydown(function(e){ // left button
        if (!isActive) {
            return;
        }
        if (e.keyCode == 37 && game_over_flag == 0) 
        ...

答案 1 :(得分:1)

每场比赛结束后尝试

$(document).unbind('keydown');

每次用户点击时,您都会绑定一个新的事件处理程序。