質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

892閲覧

ボタンを押すとリセットされるようにしたい

knight1220

総合スコア23

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/10/08 06:03

どうぶつ将棋のゲームを作成しており、ゲームが終了した時(勝敗が決まった時)用にリセットボタンを作りたいと考えています。
現在は、変数testにリセットしたい部分のコードをhtml()を使用して保存しておき、ボタンを押すと変数testを呼び出してリセットしているのですが、見た目は初めの状態に戻るのですが、jQueryが効かなくなってしまい(駒をクリックしても動かなくなってしまい)困っております。
どのようにすればうまくいくのか全く見当も付かずお手上げ状態です。
もし、わかる方がいらっしゃいましたらご教授いただければ幸いです。

html

1<div id="all_cover" class="all_cover"> 2 <div class="player2_space"> 3 4 </div> 5 6 <table class="box_cover"> 7 <tr class="row1"> 8 <td class="r1_low1 r1 l1" id="1"> 9 <div id="e_giraffe" class="item player2_item giraffe"> 10 <img src="./img/キリン.png"> 11 </div> 12 </td> 13 <td class="r1_low2 r1 l2" id="2"> 14 <div id="e_lion" class="item player2_item lion"> 15 <img src="./img/ライオン.png"> 16 </div> 17 </td> 18 <td class="r1_low3 r1 l3" id="3"> 19 <div id="e_elephant" class="item player2_item elephant"> 20 <img src="./img/象.png"> 21 </div> 22 </td> 23 </tr> 24 <tr class="row2"> 25 <td class="r2_low1 r2 l1" id="4"> 26 </td> 27 <td class="r2_low2 r2 l2" id="5"> 28 <div id="e_chick" class="player2_item chick item"> 29 <img src="./img/ひよこ.png"> 30 </div> 31 </td> 32 <td class="r2_low3 r2 l3" id="6"> 33 </td> 34 </tr> 35 <tr class="row3"> 36 <td class="r3_low1 r3 l1" id="7"> 37 </td> 38 <td class="r3_low2 r3 l2" id="8"> 39 <div id="m_chick" class="chick item player1_item"> 40 <img src="./img/ひよこ.png"> 41 </div> 42 </td> 43 <td class="r3_low3 r3 l3" id="9"> 44 </td> 45 </tr> 46 <tr class="row4"> 47 <td class="r4_low1 r4 l1" id="10"> 48 <div id="m_elephant" class="item elephant player1_item"> 49 <img src="./img/象.png"> 50 </div> 51 </td> 52 <td class="r4_low2 r4 l2" id="11"> 53 <div id="m_lion" class="item lion player1_item"> 54 <img src="./img/ライオン.png"> 55 </div> 56 </td> 57 <td class="r4_low3 r4 l3" id="12"> 58 <div id="m_giraffe" class="item giraffe player1_item"> 59 <img src="./img/キリン.png"> 60 </div> 61 </td> 62 </tr> 63 </table> 64 <div id="m_chicken" class="chicken item player1_item none"> 65 <img src="./img/ニワトリ.png"> 66 </div> 67 <div id="e_chicken" class="chicken item player2_item none"> 68 <img src="./img/ニワトリ.png"> 69 </div> 70 71 <div class="player1_space"> 72 </div> 73 74</div>

jQuery

1var test=$('.all_cover').html(); 2 3$('.btn').click(function(){ 4 $('.all_cover').html(test); 5 });

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

単に「新しく差し替えられたHTMLの要素に対してイベントが付与されてない」のだと思います。
$('.btn').on('click',function(){のように書くと「現在読み込まれている要素」指定になるので、これを動的に与える必要があります。

$(document).on('click','.btn',function(){
のようにすると良いです。第二引数が要素名。
あとは「コマを動かす」要素に同じようにあてていってください。

ただ、htmlガボッと全体持つよりも、各コマの名前と初期位置をオブジェクト(配列形式)で持っておいて初期化メソッドを用意し、画面初期表示時とリセットボタン押下時に実行させるようにした方が良さそうには思います。

投稿2020/10/08 06:11

編集2020/10/08 06:12
m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

knight1220

2020/10/08 06:47

クリックイベントを全て教えて頂いた形に修正することで動くようになりました! ありがとうございました!
m.ts10806

2020/10/08 07:05

解決したようで何よりですが、回答に書いたようにhtml全体持つのは汎用性に欠けますし、あまりシステマチックではありません。 要素の配置からJavaScriptで制御した方がよりアプリケーションとして拡張性の高いものになると思います。
knight1220

2020/10/08 07:26

アドバイスありがとうございます。 教えて頂いたように配列形式に初期配置を設定して呼び出す方法も試してみたいと思います。
guest

0

メインの処理が一切書かれていないので判断できませんが
盤面上のコマの位置以外にJavascript上コマの位置を設定している変数が存在し
それがリセットされなので、画面は更新されるが処理的には終わった状態ある為動かないとかではありませんか?

投稿2020/10/08 06:11

kuma_kuma_

総合スコア2506

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

knight1220

2020/10/08 06:32

メインのコードを載せると多すぎて載せることができなかったので載せませんでした。 申し訳ございません。 <td>をクリックしたときにクラスをつけたり外したりすることで駒が動くようにしているので、htmlをリセットすることで処理が終わっている為に動かないというわけではないと思っているのですが… teratailに追加でコードを載せることはできないのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問