jq点击事件多次响应,jQuery点击事件多次触发

I'm attempting to write a video poker game in Javascript as a way of getting the basics of it down, and I've run into a problem where the jQuery click event handlers are firing multiple times.

They're attached to buttons for placing a bet, and it works fine for placing a bet on the first hand during a game (firing only once); but in betting for the second hand, it fires the click event twice each time a bet or place bet button is pressed (so twice the correct amount is bet for each press). Overall, it follows this pattern for number of times the click event is fired when pressing a bet button once--where the ith term of the sequence is for the betting of the ith hand from the beginning of the game: 1, 2, 4, 7, 11, 16, 22, 29, 37, 46, which appears to be n(n+1)/2 + 1 for whatever that's worth--and I wasn't smart enough to figure that out, I used OEIS. :)

Here's the function with the click event handlers that are acting up; hopefully it's easy to understand (let me know if not, I want to get better at that as well):

/** The following function keeps track of bet buttons that are pressed, until place button is pressed to place bet. **/

function pushingBetButtons() {

$("#money").text("Money left: $" + player.money); // displays money player has left

$(".bet").click(function() {

var amount = 0; // holds the amount of money the player bet on this click

if($(this).attr("id") == "bet1") { // the player just bet $1

amount = 1;

} else if($(this).attr("id") == "bet5") { // etc.

amount = 5;

} else if($(this).attr("id") == "bet25") {

amount = 25;

} else if($(this).attr("id") == "bet100") {

amount = 100;

} else if($(this).attr("id") == "bet500") {

amount = 500;

} else if($(this).attr("id") == "bet1000") {

amount = 1000;

}

if(player.money >= amount) { // check whether the player has this much to bet

player.bet += amount; // add what was just bet by clicking that button to the total bet on this hand

player.money -= amount; // and, of course, subtract it from player's current pot

$("#money").text("Money left: $" + player.money); // then redisplay what the player has left

} else {

alert("You don't have $" + amount + " to bet.");

}

});

$("#place").click(function() {

if(player.bet == 0) { // player didn't bet anything on this hand

alert("Please place a bet first.");

} else {

$("#card_para").css("display", "block"); // now show the cards

$(".card").bind("click", cardClicked); // and set up the event handler for the cards

$("#bet_buttons_para").css("display", "none"); // hide the bet buttons and place bet button

$("#redraw").css("display", "block"); // and reshow the button for redrawing the hand

player.bet = 0; // reset the bet for betting on the next hand

drawNewHand(); // draw the cards

}

});

}

Please let me know if you have any ideas or suggestions, or if the solution to my problem is similar to a solution to another problem on here (I've looked at many similarly titled threads and had no luck in finding a solution that could work for me).

解决方案

To make sure a click only actions once use this:

$(".bet").unbind().click(function() {

//Stuff

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值