多次触发jQuery单击事件

我正试图用Javascript编写一个视频扑克游戏,作为了解游戏基本知识的一种方式,但我遇到了一个问题,jQuery单击事件处理程序多次触发

它们与下注按钮相连,在游戏中第一手下注(仅开火一次)效果良好;但在第二手投注中,每次按下下注或下注按钮时,它会触发两次单击事件(因此每次按下的正确下注金额为两倍)。总的来说,当按下一次下注按钮时,点击事件被触发的次数遵循此模式,其中序列的第i个下注项用于从游戏开始时第i个下注手的下注:1、2、4、7、11、16、22、29、37、46,看起来是n(n+1)/2+1,不管它值多少钱——我还没有聪明到弄明白这一点,我使用了OEIS.:)

这是一个带有正在运行的单击事件处理程序的函数;希望这很容易理解(如果不是,请告诉我,我也想在这方面做得更好):

/**以下功能跟踪已按下的下注按钮,直到按下下注按钮下注**/
功能按钮BetButtons(){
$(“#money”).text(“money left:$”+player.money);//显示玩家剩下的钱
$(“.bet”)。单击(函数(){
var amount=0;//保存玩家在此单击上下注的金额
如果($(this.attr(“id”)==“bet1”){//玩家只需下注$1
金额=1;
}else if($(this).attr(“id”)==“bet5”){//etc。
金额=5;
}else if($(this.attr(“id”)=“bet25”){
金额=25;
}else if($(this.attr(“id”)=“bet100”){
金额=100;
}else if($(this.attr(“id”)=“bet500”){
金额=500;
}else if($(this.attr(“id”)=“bet1000”){
金额=1000;
}
如果(player.money>=金额){//检查玩家是否有这么多可下注
player.bet+=amount;//单击该按钮将刚刚下注的内容添加到该手牌的总下注中
player.money-=amount;//当然,从玩家当前的pot中减去它
$(“#money”).text(“money left:$”+player.money);//然后重新显示该玩家剩下的内容
}否则{
提醒(“您没有$”+金额+“可下注”);
}
});
$(“#放置”)。单击(函数(){
如果(player.bet==0){//玩家没有在这手牌上下注
警惕(“请先下注。”);
}否则{
$(“#card_para”).css(“display”、“block”);//现在显示这些卡
$(“.card”).bind(“click”,cardClicked);//并设置卡的事件处理程序
$(“#下注按钮_para”).css(“显示”、“无”);//隐藏下注按钮并放置下注按钮
$(“#redraw”).css(“显示”、“块”);//并重新显示用于重新绘制手的按钮
player.bet=0;//重置下注下注的赌注
drawNewHand();//抽牌
}
});
}

请让我知道你是否有任何想法或建议,或者我的问题的解决方案是否与这里的另一个问题的解决方案类似(我看过许多类似标题的帖子,但没有找到一个适合我的解决方案)

要确保只单击一次操作,请使用以下命令:

$(“.bet”).unbind()。单击(函数(){
//东西
});

发表评论