状況と問題点
table要素の各tdのセル内に表示要素と非表示要素の2つをdivで囲って置いています。
各行の最後にあるボタンをクリックしたら、行ごとに表示・非表示を切り替えたいので
ボタンのクリックで以下のページようにしました。jQueryを使っています。
しかしボタンをクリックしても一瞬だけ切り替わって、すぐに元にもどってしまいます
切り替わったまま保持したいのですがどうすればいいでしょうか?
稼働中のページ
コード
以下のHTMLは最小限に簡略化したもので、実際には複数列のものが複数行あります。
CSS
1 .mod { 2 display: none; 3 }
HTML
1 <tr> 2 <td>2021-09-19</td> 3 <td> 4 <div class="disp" data-key="2021-09-19">●</div> 5 <div class="mod" data-key="2021-09-19"><input type="checkbox" name="eachday09" checked /></div> 6 </td> 7 <td> 8 <div class="disp" data-key="2021-09-19">●</div> 9 <div class="mod" data-key="2021-09-19"><input type="checkbox" name="eachday10" checked /></div> 10 </td> 11 <td> 12 <div class="disp"><a href="" class="changeBtn"><input type="button" value="変更" data-key="2021-09-19"></div> 13 <div class="mod"><a href="" class="registerBtn"><input type="button" value="登録"></div> 14 </td> 15 </tr>
JavaScriipt
1 $('.changeBtn').click(function(){ 2 let key = $("input",this).data('key'); 3 $('.disp'+'[data-key="'+key+'"]').css('display','none'); 4 $('.mod'+'[data-key="'+key+'"]').css('display','block'); 5 })
どの行のchangeBtnがクリックされたか識別する必要があったので
データ属性を取得し、その属性値を持った要素を対象に
表示・非表示を切り替えようとしました。
単純なパターン
これをやる前の実験としてやった以下のような単純なセレクタでは
すぐにもとに戻ることはなく切り替わったままになります
単純なのでどの行とか識別できず全部が対象になっていますが。
HTML
1 <table> 2 <tr> 3 <td><div class="disp">●</div><div class="mod"><label><input type="checkbox" name="eachday9" /></label></div></td> 4 <td><div class="disp">-</div><div class="mod"><label><input type="checkbox" name="eachday10" /></label></div></td> 5 <td><div class="disp"><input type="button" value="変更" class="changeBtn"></div><div class="mod"><input type="button" value="登録" id="changeBtn"></div></td> 6 </tr> 7 <tr> 8 <td><div class="disp">●</div><div class="mod"><label><input type="checkbox" name="eachday9" /></label></div></td> 9 <td><div class="disp">-</div><div class="mod"><label><input type="checkbox" name="eachday10" /></label></div></td> 10 <td><div class="disp"><input type="button" value="変更" class="changeBtn"></div><div class="mod"><input type="button" value="登録" id="changeBtn"></div></td> 11 </tr> 12 </table>
JavaScript
1 $('.changeBtn').click(function(){ 2 $('.mod').css('display','block'); 3 $('.disp').css('display','none'); 4 })
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/19 05:56