[解決済み】jQueryのクリックイベントが複数回発生する件
2022-03-26 07:15:35
質問
Javascriptでビデオポーカーゲームを基本から書こうとしているのですが、jQueryのクリックイベントハンドラが複数回発火する問題に遭遇しました。
ベットを置くためのボタンに取り付けられていて、ゲーム中に最初の手にベットを置くのはうまくいきます (1回だけ発射されます)。しかし、2番目の手にベットする場合は、ベットまたはプレースベットボタンが押されるたびにクリックイベントが2回発射されます (したがって、押すたびに正しい金額が2回賭けられます)。 全体として、ベットボタンを1回押したときにクリックイベントが発生する回数は、このパターンに従っています。 と のベットに関するシーケンスである。 と ゲーム開始からの手 1, 2, 4, 7, 11, 16, 22, 29, 37, 46, これはどう考えても n(n+1)/2 + 1 と思われます。 オエイス . :)
以下は、動作しているクリックイベントハンドラを含む関数です。わかりやすいといいのですが(そうでなければ教えてください、私ももっとうまくなりたいのです)。
/** 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
}
});
}
何かアイデアや提案があれば教えてください。また、私の問題に対する解決策が、ここにある別の問題に対する解決策と類似していれば教えてください(同じようなタイトルのスレッドをたくさん見ましたが、私に効くような解決策は見つかりませんでした)。
解決方法は?
クリックが一度しか動作しないようにするには、次のようにします。
$(".bet").unbind().click(function() {
//Stuff
});
関連
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み】ETIMEDOUTエラーの対処方法は?
-
[解決済み] 要素外でのクリックを検出するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] jQueryでテーブルの行を追加する
-
[解決済み] テキストボックスのEnterキーで、JavaScriptでボタンクリックをトリガーする
-
[解決済み] jQuery 複数のイベントで同じ関数を起動する
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】React Js: Uncaught (in promise) SyntaxError: 位置 0 の JSON で予期しないトークン < が発生しました。
-
[解決済み】フォームコントロールの値アクセサがない
-
[解決済み] Uncaught TypeError: 未定義のプロパティ 'top' を読み込めない
-
[解決済み】Google Conversionsが動作しない - スクリプトが読み込まれない
-
[解決済み】Uncaught SyntaxError: JSON の位置 0 に予期しないトークン u があります。
-
[解決済み】npm install --legacy-peer-deps は具体的に何をするのですか?どんなときに推奨されるのか/どんな使用例が考えられるのか?
-
[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
-
[解決済み】 Uncaught Reference Error: stLight is not defined (in Chrome only)
-
[解決済み】 \u003C とは何ですか?
-
[解決済み] React.jsにおけるdeclarativeとimperativeの違いとは?