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

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

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

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

Q&A

2回答

11021閲覧

jquery モーダルウィンドウでボタン押下毎に初期化を行いたい

rocker_metal

総合スコア7

jQuery

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

0グッド

0クリップ

投稿2016/08/07 13:41

jQueryを使用してモーダルウィンドウ上で切り替えを行いたいと思いコーディングしたのですが、
work_image部分をクリックするとモーダルを出す→modal_main_imgに写真切り替えができる様にしました。

しかし、モーダルを閉じても初期化がされない為、次のmodalを出すと、
直前に切り替えを行った画像がmodal_main_img部分に残ってしまう現象が出ています。

モーダルを閉じた際にsrcを初期化できればいいのかなと思うのですが
jqueryをどの様に書き換えれば良いか見当が付きません。。

慣れていないもので情報不足など御座いましたらご連絡頂けると幸いです。
お手数お掛け致しますが宜しくお願い致します。

html

1<div> 2 <a href="#modal1"><div class="details"></div></a> 3 <div> 4 <img class="work_image" src="img/thumb1.jpg" alt=""> 5 </div> 6</div> 7 8<div id="modal1" class="modal hide" > 9 <a href="#" class="modal-close"></a> 10 <div class="modal_contents"> 11 <div class="modal_contents_left"> 12 <img src="img/3.jpg" alt="" class="modal_main_img"> 13 <ul class="thumblist"> 14 <li class="modal_desc selected"> 15 <a href="#" data-img="img/1.jpg"> 16 <img src="img/1.jpg" alt="" class="thumb"> 17 </a> 18 </li> 19 <li> 20 <a href="#" data-img="img/1-2.jpg"> 21 <img src="img/1-2.jpg" alt="" class="thumb"> 22 </a> 23 </li> 24 </ul> 25 </div> 26 </div> 27</div>

css

1.show { 2 display: block; 3} 4.hide { 5 display: none; 6}

javascript

1var currentScroll; 2 function showModal(event) { 3 event.preventDefault(); 4 5 var body = $("body"); 6 var contents = $(this).attr("href"); 7 var $modalWin = $(contents); 8 var $window = $(window); 9 var posX = ($window.width() - $modalWin.outerWidth()) / 2; 10 var posY = ($window.height() - $modalWin.outerHeight()) / 2; 11 var $shade = $("<div><div>"); 12 $shade.attr("id", "shade") 13 .on("click", hideModal); 14 15 currentScroll = $window.scrollTop(); 16 $(body).css({position: 'fixed', width: '100%', top: -1 * currentScroll}); 17 18 $modalWin.before($shade) 19 .css({left: posX, top: posY, "z-index" : "333"}) 20 .removeClass("hide") 21 .addClass("show") 22 .on("click", "button, .modal-close", function () { 23 hideModal(); 24 return false; 25 }); 26 $(".thumblist li a").on("click", function (event) { 27 event.preventDefault(); 28 var $this = $(this); 29 $this.parent().siblings() 30 .removeClass("selected") 31 .end() 32 .addClass("selected"); 33 var imagePath = $this.data("img"); 34 $(".modal_main_img").attr("src", imagePath); 35 }); 36 } 37 function hideModal() { 38 $("#shade").remove(); 39 $('.modal').removeClass("show") 40 .addClass("hide"); 41 $('body').attr({style: ''}).prop({scrollTop: currentScroll}); 42 } 43 $(".show-modal").on("click", showModal);

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

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

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

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

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

guest

回答2

0

srcにimagePathを入れることができているのだから、わかりそうなものですが…
どこかから持ってきたソースなんですかね?

単純に

function hideModal() {

の中で、

$(".modal_main_img").attr("src", '');

とすれば良いのではないでしょうか?

投稿2016/08/07 14:14

NatsumiOki

総合スコア1298

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

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

0

これでいけませんか?

JavaScript

1var currentScroll; 2$( '.modal_main_img' ).data( 'img', $( '.modal_main_img' ).attr( 'src' ) ); 3/* 略 */ 4function hideModal() { 5 $("#shade").remove(); 6 $( '.modal_main_img' ).attr( 'src', $( '.modal_main_img' ).data( 'img' ) ); 7 /* 略 */ 8}

投稿2016/08/07 14:13

kei344

総合スコア69400

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

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

rocker_metal

2016/08/07 15:01

ご回答ありがとうございます。 上記を試してみたのですが、少し挙動が変わりました。 modal1、modal2、modal3と続けてギャラリーの様にしており、 修正前はmodal2の写真切り替えをしてmodal3に移るとmodal2部分が表示されており、 今回ご教示頂いたコードに修正すると直前の写真切り替えに関わらず modal2、modal3ともにmodal1の写真が表示される様になりました。 各モーダルを表示する毎に写真を初期化する事は可能でしょうか。。。
kei344

2016/08/07 15:30

「modal1、modal2、modal3」がある前提ならそれを書かないとそもそも解決できません。あなたのコードは回答者に公開されていないので、「可能です」以外何を答えればよいのでしょうか。また、少なくとも質問文のコードは複数ギャラリーに対応しているようには見えません。 ご自分で組んだコードでないのであれば、ギャラリー系ライブラリを利用されてはいかがでしょうか。 【高機能画像ギャラリーを手軽に設置できるjQueryプラグイン「lightGallery」】 http://nelog.jp/jquery-lightgallery 【lightGallery】 http://sachinchoolur.github.io/lightGallery/
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問