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

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

新規登録して質問してみよう
ただいま回答率
85.31%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

Q&A

解決済

2回答

3838閲覧

izimodalを複数ウィンドウでグループ化し、クリックしたコンテンツのモーダルウィンドウから表示させたい。

hrsw

総合スコア13

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

0グッド

2クリップ

投稿2019/02/24 15:12

編集2019/02/25 08:42

jQueryのプラグインizimodalを使って、複数の内容をグループ化し、表示させるページを制作したいと考えています。
izimodalは通常通り動きましたが、

  1. クリックしたコンテンツの画像を表示させる。
  2. 表示したモーダルウィンドウをグループ間でスライドさせる。

の2点の動作を追加したところ、クリックした後、画像を表示させたい箇所が複数あるためか、
クリックしたコンテンツのモーダルウィンドウではなく、グループ化した1番最初の画像が常に表示されてしまいました。

HTML

1 <li class="work_con work_ban" id="banner"> 2   <h2 class="work_sub-tit">BANNER</h2> 3   <div class="work_itm-wrap"> 4     <ul class="work_itm"> 5      <li class="work_itm-each" data-iziModal-open=".iziModal" data-izimodal-zindex="20000" data-izimodal-preventclose=""> 6      <img class="work_ban1 img" src="images/banner1.png" alt="banner1"> 7      </li> 8      <div id="modal-default" class="iziModal" data-izimodal-title="title" data-izimodal-subtitle="subtitle"> 9      <figure style="text-align:center;"><img class="iziModal_img" src="images/banner1_o.jpg" alt="banner1" /></figure> 10      <p class="iziModal_word">text</p> 11    </div> 12   <li class="work_itm-each" data-iziModal-open=".iziModal" data-izimodal-zindex="20000" data-izimodal-preventclose=""> 13    <img class="work_ban2 img" src="images/banner2_1.png" alt="banner2"> 14   </li> 15   <div id="modal-default" class="iziModal" data-izimodal-title="title" data-izimodal-subtitle="subtitle"> 16   <figure style="text-align:center;"><img class="iziModal_img" src="images/banner2_o.png" alt="banner2" /></figure> 17   <p class="iziModal_word">text</p> 18   </div> 19   </ul> 20   </div> 21  </li> 22

jQuery

1 2 $(document).on('click', '.open-default', function(event) { 3 event.preventDefault(); 4 $('#modal-default').iziModal('open',this); 5 }); 6 $('#modal-default').iziModal(); 7 $('.iziModal',this).iziModal({ 8 group: "group01", 9 loop: true, 10 headerColor: "rgba(5,41,88,0.8)", 11 padding:20, 12 borderBottom:false, 13 radius:0, 14 closeButton:false, 15 background:"rgb(246,246,246)", 16 title:"#f6f6f6", 17 subtitle:"#f6f6f6", 18 navigateCaption:"#052958", 19 }); 20

クリックしたコンテンツの情報を表示するためには、上記コード以外に追加する記述が必要でしょうか?
ご回答よろしくお願いします。

【制作環境】
エディタ:Visual Studio Code
言語:HTML5、CSS3、jQuery2.2.4

【izimodalのopenに関する記述】

jQuery

1 open: function (param) { 2 3 var that = this; 4 5 try { 6 if(param !== undefined && param.preventClose === false){ 7 $.each( $('.'+PLUGIN_NAME) , function(index, modal) { 8 if( $(modal).data().iziModal !== undefined ){ 9 var state = $(modal).iziModal('getState'); 10 11 if(state == 'opened' || state == 'opening'){ 12 $(modal).iziModal('close'); 13 } 14 } 15 }); 16 } 17 } catch(e) { /*console.warn(exc);*/ } 18 19 (function urlHash(){ 20 if(that.options.history){ 21 22 var oldTitle = document.title; 23 document.title = oldTitle + " - " + that.options.title; 24 changeHashWithoutScrolling('#'+that.id); 25 document.title = oldTitle; 26 //history.pushState({}, that.options.title, "#"+that.id); 27 28 window.$iziModal.history = true; 29 } else { 30 window.$iziModal.history = false; 31 } 32 })(); 33 34 function opened(){ 35 36 // console.info('[ '+PLUGIN_NAME+' | '+that.id+' ] Opened.'); 37 38 that.state = STATES.OPENED; 39 that.$element.trigger(STATES.OPENED); 40 41 if (that.options.onOpened && ( typeof(that.options.onOpened) === "function" || typeof(that.options.onOpened) === "object" ) ) { 42 that.options.onOpened(that); 43 } 44 } 45 46 function bindEvents(){ 47 48 // Close when button pressed 49 that.$element.off('click', '[data-'+PLUGIN_NAME+'-close]').on('click', '[data-'+PLUGIN_NAME+'-close]', function (e) { 50 e.preventDefault(); 51 52 var transition = $(e.currentTarget).attr('data-'+PLUGIN_NAME+'-transitionOut'); 53 54 if(transition !== undefined){ 55 that.close({transition:transition}); 56 } else { 57 that.close(); 58 } 59 }); 60 61 // Expand when button pressed 62 that.$element.off('click', '[data-'+PLUGIN_NAME+'-fullscreen]').on('click', '[data-'+PLUGIN_NAME+'-fullscreen]', function (e) { 63 e.preventDefault(); 64 if(that.isFullscreen === true){ 65 that.isFullscreen = false; 66 that.$element.removeClass('isFullscreen'); 67 } else { 68 that.isFullscreen = true; 69 that.$element.addClass('isFullscreen'); 70 } 71 if (that.options.onFullscreen && typeof(that.options.onFullscreen) === "function") { 72 that.options.onFullscreen(that); 73 } 74 that.$element.trigger('fullscreen', that); 75 }); 76 77 // Next modal 78 that.$navigate.off('click', '.'+PLUGIN_NAME+'-navigate-next').on('click', '.'+PLUGIN_NAME+'-navigate-next', function (e) { 79 that.next(e); 80 }); 81 that.$element.off('click', '[data-'+PLUGIN_NAME+'-next]').on('click', '[data-'+PLUGIN_NAME+'-next]', function (e) { 82 that.next(e); 83 }); 84 85 // Previous modal 86 that.$navigate.off('click', '.'+PLUGIN_NAME+'-navigate-prev').on('click', '.'+PLUGIN_NAME+'-navigate-prev', function (e) { 87 that.prev(e); 88 }); 89 that.$element.off('click', '[data-'+PLUGIN_NAME+'-prev]').on('click', '[data-'+PLUGIN_NAME+'-prev]', function (e) { 90 that.prev(e); 91 }); 92 }

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

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

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

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

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

kei344

2019/02/24 15:20

プラグイン/ライブラリは公式配布サイトのURLを質問文に追記ください。(URLにはリンクを張ることができます)また、「#modal-default」のHTMLも提示してください。
guest

回答2

0

ベストアンサー

同様の問題で悩んでおりましたが、以下のようにすれば実現できます。

html

1<li class="work_itm-each" data-iziModal-open=".iziModal_1" data-izimodal-zindex="20000" data-izimodal-preventclose="" data-izimodal-group="group01"> 2 <img class="work_ban1 img" src="images/banner1.png" alt="banner1"> 3</li> 4<div id="modal-default" class="iziModal iziModal_1" data-izimodal-title="title" data-izimodal-subtitle="subtitle"> 5 <figure style="text-align:center;"><img class="iziModal_img" src="images/banner1_o.jpg" alt="banner1" /></figure> 6 <p class="iziModal_word">text</p> 7</div> 8<li class="work_itm-each" data-iziModal-open=".iziModal_2" data-izimodal-zindex="20000" data-izimodal-preventclose="" data-izimodal-group="group01"> 9 <img class="work_ban2 img" src="images/banner2_1.png" alt="banner2"> 10</li> 11<div id="modal-default" class="iziModal iziModal_2" data-izimodal-title="title" data-izimodal-subtitle="subtitle"> 12 <figure style="text-align:center;"><img class="iziModal_img" src="images/banner2_o.png" alt="banner2" /></figure> 13 <p class="iziModal_word">text</p> 14</div>

ポイントは、data-iziModal-open.iziModal_1のようにし、個々で識別できるようにしてボタンの方はclass="iziModal iziModal_1"のようにすることです。
また冗長的ですがdata-izimodal-group="group01"を追加することで望み通りの動作になります。

jQueryの方のgroup: "group01"は消してください。

投稿2019/03/01 07:42

編集2019/03/01 07:45
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

hrsw

2019/03/01 09:44

ご回答ありがとうございます!希望していた動作通りの動きになりました!!
guest

0

<div id="modal-default" class="iziModal" となっているので$('.iziModal',this)に含まれるのでは。
クリックについては.open-defaultの要素が提示されていないのでどういう動作をさせたいのかがわかりません。

投稿2019/02/24 16:10

kei344

総合スコア69625

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

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

hrsw

2019/02/25 08:08

ご回答いただき、ありがとうございます! jQueryの1~5行目については記載しなくても動くため、id="modal-default"とclass="open-default"については、class="iziModal”として設定した箇所が、配布されたjsデータによってまとめて動作する記述がされていると思います。どの箇所が該当するかわからず、長文になってしまったのですが、配布されたjsデータの中のopenに関する記述を追加項目にコピペしました。 動作としては、サイト上に19ケ所設置したボタンそれぞれに、別々のモーダルウィンドウが立ち上がる設定をしたいと考えています(現状ではどのボタンを押しても19ケ所を1つにまとめたグループの、1番最初のモーダルウィンドウが表示されてしまいます)。
kei344

2019/02/25 08:33

> 配布されたjsデータによってまとめて動作する記述がされていると思います。 何を言っているのかがわからない。 $(document).on('click', '.open-default' というコードは open-default というクラスが付いた物にクリック時の動作をつけるコードです。 そのクラスが無ければそもそも動きません。消しても動くのは当然です。 別の物にしたいなら個別にidを振って処理すればよいのでは。
kei344

2019/02/25 08:46

追記文にも書いてないが・・・。
hrsw

2019/03/01 09:45

ご回答ありがとうございました。希望していた動作通りの動きになりました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問