https://teratail.com/questions/e2znw7h01pb0rj
で、質問されていただいた
「Colorbox」でモーダルウィンドウを出すための続きのような質問です。
同じページ内にモーダルの複数のリンクを生成して、それぞれ異なる内容を表示させたいです。
前回の質問でこのようにご教示頂きました。
①tdの中にモーダルHTMLを置く
②モーダルHTMLをループの外に置いてクリック時のイベントでその行個別の情報を送って非同期で再検索して結果をHTML上に出力(JavaScriptが必要)
私の理解不足で、ご教示頂いたこととは違っていると思うのですが
異なる内容を表示させることは出来ました。
ただ、それは、何個もスクリプトを作るというものです。
<?php print("<table>");//テーブル書き出し $tw = "aaa"; print("<tr>"); print("<th></th>"); print("<td><a href='#colorbox_inline' class='trig-colorbox_inline'>関連ツイート</a></td>"); print("<div style='display: none'>"); print("<div id=colorbox_inline>"); print("{$tw}"); print("</div>"); print("</div>"); print("</tr>"); print("</table>"); $tw = "bbb"; print("<tr>"); print("<th></th>"); print("<td><a href='#colorbox_inline2' class='trig-colorbox_inline2'>関連ツイート</a></td>"); print("<div style='display: none'>"); print("<div id='colorbox_inline2'>"); print("bbb"); print("</div>"); print("</div>"); print("</tr>"); //このスクリプトを何個も書くのはおかしい気が…。 //それともループで生成する? echo <<<EOM <script> $('.trig-colorbox_inline').colorbox({ inline: true, opacity: 0.6, }); </script> EOM; echo <<<EOM <script> $('.trig-colorbox_inline2').colorbox({ inline: true, opacity: 0.6, }); </script> EOM; ?>
https://yasaidemo.com/kokutai_hearing/2.php
別のやり方の方がいいのでしょうか?
そもそもですが、PHPが必要な内容に見えません。
全部直に文字列出力してるだけです。
モーダルに必要な部分だけを切り取っています。
HTMLで書いていると
HTMLでは動くのにPHPでは動かなくなることがあるので
そうしていました。
いずれにしてもいきなりPHPじゃなく、モック作ってからにしたほうがPHPも組みやすくなります
HTMLにしてみました。
<link rel="stylesheet" href="colorbox.css"> <script src="jquery.min.js"></script> <script src="jquery.colorbox-min.js"></script> </head> <body> <table> <tr> <th></th> <td><a href='#colorbox_inline' class='trig-colorbox_inline'>関連ツイート</a></td> <div style='display: none'> <div id=colorbox_inline> aaa </div> </div> </tr> </table> <tr> <th></th> <td><a href='#colorbox_inline2' class='trig-colorbox_inline2'>関連ツイート</a></td> <div style='display: none'> <div id='colorbox_inline2'> bbb </div> </div> </tr> // </div> <script> $('.trig-colorbox_inline').colorbox({ inline: true, opacity: 0.6, }); </script> <script> $('.trig-colorbox_inline2').colorbox({ inline: true, opacity: 0.6, }); </script> </body> </html>
回答1件
あなたの回答
tips
プレビュー