前提
1つの画面にモーダルウィンドウのリンクを2個置き、それぞれコンテンツの異なるものを用意したのですが表示させたいのですがうまくいきません。※環境はWordPress上です
呼び出し元のaタグにdata-target="modal1" data-target="modal2"を設け、
モーダルのコンテンツのほうではdivタグにid="modal1"、id="modal2"のようにし、data-target=modal1が選択されたらコンテンツ id="modal1"を表示、modal2が選択されたらコンテンツ id="modal2"を表示させたいです。
現状では両方とも画面が開いてしまい、どうやって切り分けたらよいのか分からずご教授願います。
jsのほうで var modal = '#' + $(this).attr('data-target');
でdata-targetの値は取れたのですが、ここからif文をかましてinnerHTMLするのでしょうか?
それだと不便といいますか、初めからphpのほうにコンテンツ内容を表示させておきたいです。
コンテンツの内容は特に難しい処理はなく、テキストと画像を載せるだけのものです。
実現したいこと
それぞれのコンテンツを表示させたい。
該当のソースコード
php
1functions.php 2 3 <div class="bouhan-box"> 4 <p><a data-target="modal1" class="modal-open reset">〇〇1について</a></p> 5 <p><a data-target="modal2" class="modal-open reset">〇〇2について</a></p> 6 </div> 7<!-- モーダル本体1 --> 8<div id="modal1" class="modal-container"> 9 <div class="modal-body"> 10 <!-- 閉じるボタン --> 11 <div class="modal-close">X</div> 12 <!-- モーダル内のコンテンツ --> 13 <div class="modal-content"> 14 <p>〇〇1について</p> 15 <img src="<?php echo get_stylesheet_directory_uri() ?>/images/xxx.jpg" alt="〇〇1について"> 16 </div> 17 </div> 18 </div> 19 <!-- モーダル本体2 --> 20 <div id="modal2" class="modal-container"> 21 <div class="modal-body"> 22 <!-- 閉じるボタン --> 23 <div class="modal-close">X</div> 24 <!-- モーダル内のコンテンツ --> 25 <div class="modal-content"> 26 <p>〇〇2について</p> 27 <img src="<?php echo get_stylesheet_directory_uri() ?>/images/yyy.jpg" alt="〇〇1について"> 28 </div> 29 </div> 30</div> 31
jsファイル
1 $(function () { 2 3 // 変数に要素を入れる 4 var open = $('.modal-open'), 5 close = $('.modal-close'), 6 container = $('.modal-container'), 7 scroll_position = 0; 8 9 10 // 開くボタンをクリックしたらモーダルを表示する 11 open.on('click', function () { 12 13 // スクロール固定 14 scroll_position = $(window).scrollTop(); 15 container.addClass('active'); 16 $('body').addClass('fixed').css({ 'top': -scroll_position }); 17 18 // data-targetの内容をIDにしてmodalに代入 19 var modal = '#' + $(this).attr('data-target'); 20 21 // ここでInnerHTML? 22 if(modal == 'modal1'){ 23 24 }else if(modal == 'modal2'){ 25 } 26 27 return false; 28 }); 29 30 //閉じるボタンをクリックしたらモーダルを閉じる 31 close.on('click', function () { 32 container.removeClass('active'); 33 $('body').removeClass('fixed').css({ top: 0 });//背景固定を解除 34 $(window).scrollTop(scroll_position);//元の位置までスクロール 35 return false;//<a>を無効化 36 }); 37 38 //モーダルの外側をクリックしたらモーダルを閉じる 39 $(document).on('click', function (e) { 40 if (!container.hasClass('active')) { 41 return; 42 } 43 if (!$(e.target).closest('.modal-body').length) { 44 container.removeClass('active'); 45 $('body').removeClass('fixed').css({ top: 0 });//背景固定を解除 46 $(window).scrollTop(scroll_position);//元の位置までスクロール 47 return false;//<a>を無効化 48 } 49 }); 50 }) 51
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/16 12:49
2022/08/17 09:02