前提・実現したいこと
・1ページに複数あるポップアップウィンドウを作りたい。
↓
・画像をクリックすると、ポップアップウィンドウが現れて画像を大きく表示できるようにしたい。
jQueryでポップアップウィンドウの実装を試みていますが、できません。
(複数の画像があり、それぞれの順番をjQueryで取得して、同じ順番のポップアップウィンドウを表示したい。)
詳細
class="works-image-box"がついている要素にid="openModal"をつけた。
id="openModal"の要素をクリックすると、 var openModal = $(this).index();で
何番目の#openModalかを取得して、$('.modalArea').eq(openModal).fadeIn();で
同じ順番の.modalAreaがフェイドインするつもりがどうも動かない。
発生している問題・エラーメッセージ
ひとつだけの表示はできたが、他のモーダルウィンドウが出てこない
該当のソースコード
html
1<!-- クリックしたい画像要素(id="openModalがついているところをクリックしたい)ここから --> 2 3 <section id="works"> 4 5 <h2 class="section-title">Works</h2> 6 <div class="works-flex"> 7 <div class="works-item"> 8 <div class="works-image-box" id="openModal"><img src="images/.png" alt=""></div> 9 <p class="works-title">(クラウドソーシング案件)</p> 10 <p class="works-cat">Design / Coding</p> 11 </div> 12 <div class="works-item"> 13 <div class="works-image-box" id="openModal"><img src="images/.jpg" alt=""></div> 14 <p class="works-title">(架空サイト)</p> 15 <p class="works-cat">Design</p> 16 </div> 17 <div class="works-item"> 18 <div class="works-image-box" id="openModal"><img src="images/.jpg" alt=""></div> 19 <p class="works-title">(架空サイト)</p> 20 <p class="works-cat">Design</p> 21 </div> 22 </div> 23 </section> 24 25 <!-- クリックしたい画像要素ここまで --> 26 27 28 29 30 <!-- モーダルエリアここから --> 31 32 33 <section id="modalArea" class="modalArea"> 34 <div id="modalBg" class="modalBg"></div> 35 <div class="modalWrapper"> 36 <div class="modalContents"> 37 <img src="images/.jpg" alt="のアップ画像"> 38 </div> 39 <div id="closeModal" class="closeModal"> 40 × 41 </div> 42 </div> 43 </section> 44 <section id="modalArea" class="modalArea"> 45 <div id="modalBg" class="modalBg"></div> 46 <div class="modalWrapper"> 47 <div class="modalContents"> 48 <img src="images/.jpg" alt="のアップ画像"> 49 </div> 50 <div id="closeModal" class="closeModal"> 51 × 52 </div> 53 </div> 54 </section> 55 56 <!-- モーダルエリアここまで --> 57
css
1/* ポップアップCSS */ 2.modalArea { 3 display: none; 4 position: fixed; 5 z-index: 20; /*サイトによってここの数値は調整 */ 6 top: 0; 7 left: 0; 8 width: 100%; 9 height: 100%; 10} 11 12.modalBg { 13 width: 100%; 14 height: 100%; 15 background-color: rgba(30,30,30,0.9); 16} 17 18.modalWrapper { 19 position: absolute; 20 top: 50%; 21 left: 50%; 22 transform:translate(-50%,-50%); 23 width: 70%; 24 max-width: 1000px; 25 padding: 10px 30px; 26 background-color: #fff; 27} 28 29.closeModal { 30 position: absolute; 31 top: 0.5rem; 32 right: 1rem; 33 cursor: pointer; 34} 35
jQuery
1// worksのポップアップウィンドウ 2 3$(function () { 4 $('#openModal').click(function(){ 5 var openModal = $(this).index(); 6 //何番目の#openModalかを取得 7 $('.modalArea').eq(openModal).fadeIn(); 8 $('html, body').css('overflow', 'hidden'); 9 }); 10 11 $('#closeModal , #modalBg').click(function(){ 12 $('.modalArea').fadeOut(); 13 $('html, body').removeAttr('style'); 14 }); 15}); 16
試したこと
一つ目の画像をクリックすると一つ目のモーダルウィンドウは出るのですが、
二つ目の画像をクリックしても反応ないし。(二つ目のポップアップウィンドウが出て欲しい)
散々悩んであれこれしてみたが、どうもうまくいきません。
詳しい方、ご回答のほどよろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
エディタ
vs code
回答1件
あなたの回答
tips
プレビュー