Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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.(我试图用Javascript编写视频扑克游戏,以降低其基础知识,但我遇到了一个问题,其中jQuery click事件处理程序多次触发。)

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 .(总体而言,在按一次下注按钮时触发单击事件的次数遵循此模式-序列的第i个词用于从游戏开始时下注第i个手: ,7、11、16、22、29、37、46,无论值多少,它看起来都是n(n + 1)/ 2 +1-而且我不够聪明,无法弄清楚,我使用OEIS 。) :)(:)) Here's the function with the click event handlers that are acting up;(这是带有正在起作用的click事件处理程序的函数;) 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).(如果您有任何想法或建议,或者我的问题的解决方案是否类似于此处的另一个问题的解决方案,请让我知道(我看过很多标题相似的主题,也没有运气找到可行的解决方案为了我)。)   ask by Gregory Fowler translate from so

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
496 views
Welcome To Ask or Share your Answers For Others

1 Answer

To make sure a click only actions once use this:(要确保一次“仅单击”操作,请使用以下命令:)

$(".bet").unbind().click(function() { //Stuff });

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...