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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

jQuery

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

4961閲覧

・1ページに**複数ある**ポップアップウィンドウを作りたい。

keisukekusaka

総合スコア1

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

jQuery

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/08/18 03:28

編集2021/08/18 04:38

前提・実現したいこと

・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

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

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

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

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

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

YT0014

2021/08/18 03:41

モーダルウィンドウの意味を、再度、ご確認ください。 https://sem-journal.com/design/modal/ その上で、ご自身のやりたいことを再検討して、質問を修正されることをお勧めします。 また、コード(HTML,CSS)は、マークダウンにてご提示ください。
keisukekusaka

2021/08/18 04:28

ご指摘ありがとうございました。修正いたしました。
guest

回答1

0

ベストアンサー

ブラウザのモーダル機能はおおむね廃止になっていますので
疑似モーダルをつくりたいということでしょうか?
jQueryを利用するならjQuery-uiのdialogを利用してみてください

投稿2021/08/18 04:19

編集2021/08/18 05:08
yambejp

総合スコア116724

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

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

keisukekusaka

2021/08/18 04:33

ご回答ありがとうございます。 正確には、ポップアップウィンドウでした。 質問を修正しました。
yambejp

2021/08/18 05:09

サンプルつけました。 モーダルからモーダルを開きたいということではない?
keisukekusaka

2021/08/18 05:58

ご回答ありがとうございます。 サンプル拝見しました。 モーダルからモーダルを開きたいのでは、ないです。 例えば、画像が10枚並んでいて、それぞれクリックできるとします。 HTMLで画像要素を10個、別にモーダルウィンドウ要素を10個書きます。 画像要素にidをつけ、そのidがクリックされると処理するj Queryを書きます。 画像(id)の順番(番号)を取得して、同じ順番のモーダルウィンドウを開きたいのです。 自分の書いたコードのどこが間違ってて動かないかを知りたいです。 説明が下手くそで申し訳ありません。
yambejp

2021/08/18 06:06

画像をクリックすると専用のモーダルが開くのでしょうか? <script> $(function(){ $('.modal').hide(); $('[data-modal]').on('click',function(){ console.log(1); $("#"+$(this).data('modal')).dialog({ modal:true, buttons:{ "閉じる":function(){ $(this).dialog("close"); }, }, }); }); }); </script> <div id="m1" class="modal"> モーダル1 </div> <div id="m2" class="modal"> モーダル2 </div> <div id="m3" class="modal"> モーダル3 </div> <img alt="1" data-modal="m1"> <img alt="2" data-modal="m2"> <img alt="3" data-modal="m3">
keisukekusaka

2021/08/18 09:10

画像をクリックすると専用のモーダルが開くのでしょうか? ↓ そうですね。専用のモーダルというか 例えば,画像が三つあって 画像 <img id='modalOpen'> <img id='modalOpen'> <img id='modalOpen'> モーダル <div id="modal-area"> <div id="modal-area"> <div id="modal-area"> 画像がクリックされた際、jQueryでid='modalOpen'の順番を取得して同じ順番のモーダルをfade inさせたいのですが、可能なんでしょうか?
yambejp

2021/08/18 09:16 編集

おなじidの要素は設定できませんよ、IDで管理するなら一つだけ用意して 中身を変更する感じですかね
keisukekusaka

2021/08/18 09:26

,,,解決致しました。。。 こんな初歩的なことが抜けておりました。 本当にありがとうございました。 次に進めます。 ベストアンサーに選ばせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問