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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1196閲覧

jQuery モーダルウインドウ

yumi0414

総合スコア18

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2016/08/10 15:38

jQueryでモーダルウインドウを作っています。

サムネールをクリックして、その拡大画像が表示され、背景をクリックすると拡大画像は消える・・・というのはできるようになったのですが、ひとつのサムネールをクリックしたときに、他のサムネールが消えてしまい、拡大画像を消した後はクリックするサムネールが無い!という状態になってしまいます。

<div id="navigation">のところのタブ2をクリックすれば最初のサムネールが並んだ画面に戻ります。

ナビゲーション部分でもjQueryをつかっているので、その関係でおかしくなっているのかな?と思うのですが原因がわかりません・・・。

どうすればよいのでしょう??

HTML

1 <div id="navigation"> 2 <ul> 3 <li><a href="#tab1" class="current">TOP</a></li> 4 <li><a href="#tab2">PHOTOS</a></li> 5 <li><a href="#tab3">LINK</a></li> 6 <li><a href="#tab4">ABOUT ME</a></li> 7 </ul> 8 </div> 9 <div id="contents"> 10 <div id="tab1"> 11 <aside> 12 <p>・・・</p> 13 </aside> 14 <p> 15 <img src="#" height="430" width="500"> 16 </p> 17 </div> 18 <div id="tab2"> 19 <a href="img/img1.jpg"><img src="img/thumb1.jpg"></a> 20 <a href="img/img2.jpg"><img src="img/thumb2.jpg"></a> 21 <a href="img/img3.jpg"><img src="img/thumb3.jpg"></a> 22 <a href="img/img4.jpg"><img src="img/thumb4.jpg"></a> 23 <a href="img/img5.jpg"><img src="img/thumb5.jpg"></a> 24 </div>

jQuery

1$(function() { 2 3 $('#contents div[id != "tab1"]').hide(); 4 $("a").click(function() { 5 $("#contents div").hide(); 6 $($(this).attr("href")).show(); 7 $($(this).attr("href")).children("div").show(); 8 $(".current").removeClass("current"); 9 $(this).addClass("current"); 10 return false; 11 }); 12 }); 13 14 $(function() { 15 $("#contents").children().click(function(){ 16 $("body").append('<div id="bg">'); 17 $("body").append('<div id="photo">'); 18 $("#bg").hide(); 19 $("#photo").hide(); 20 $("#photo").html("<img>"); 21 $("#photo img").attr("src",$(this).attr("href")); 22 $("#photo img").attr("width",500); 23 $("#photo img").attr("height",500); 24 $("#photo img").attr("alt","Photo"); 25 $("#bg").fadeIn(); 26 $("#photo").fadeIn(); 27 $("#bg").click(function() { 28 $(this).fadeOut(function() { 29 $(this).remove(); 30 }); 31 $("#photo").fadeOut(function() { 32 $(this).remove(); 33 }); 34 }); 35 return false; 36 }); 37 38 });

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

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

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

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

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

guest

回答1

0

ベストアンサー

あまり細かくは追えてないですが、jsの最初の方

$(function() { $('#contents div[id != "tab1"]').hide(); $("a").click(function() { $("#contents div").hide();

ここの $("a")の指定で、navigationの a タグも、div#tab2 内のaタグも対象になっています。
ここで

$("#contents div").hide();

しているので、div#tab2が消えているのではないでしょうか。

実際にはきちんとクラスや親子関係で狙ったタグだけに作用するようにすべきですが、
(それはどのようにアニメーションさせたいか次第なのでご自分で考える必要がありますが、)
とりあえず「サムネイルが消える」というのを回避する事だけを考えるなら、

$(function() { $('#contents div[id != "tab1"]').hide(); $("ul>li>a").click(function() { $("#contents div").hide();

$("a")$("ul>li>a") にすれば消えなくなると思います。
(#tab2のaには当てはまらなくなるので)

これで原因をつかめたら自分の好みに合うように変更してみてください。

投稿2016/08/10 15:53

flied_onion

総合スコア2604

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問