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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

CSS

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

Q&A

解決済

1回答

1559閲覧

JSで、クリックで表示非表示するボックス内のリンクは動作の対象外にしたい

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

CSS

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

0グッド

0クリップ

投稿2016/09/12 15:04

###前提・実現したいこと
スマホサイトで、写真をクリックすると、下からキャプションが出て、
再度クリックすると引っ込む動きをJSで実装中で、動き自体はなんとかできたのですが、
キャプションにブランクのリンクがあり、それを押した場合は、キャプション自体は引っこまず、
出たままでいるようにしたいと思っています。

###発生している問題・エラーメッセージ

リンクをクリックすると、キャプションが引っ込んでしまいます。
※リンク自体は正常に開きます。

###該当のソースコード

■該当部分のHTML

<ul id="photoList"> <li> <div class="inner"> <img alt="" src="images/0000001.jpg"> <div class="mask"> <div class="cap"> <p>キャプションが入ります。<a target="_blank" href="">外部リンク</a></p> </div><!-- /.cap --> </div><!-- /.mask --> </div><!-- /.inner --> </li> <!-- 以下、<li>〜</li>が続きます。 --> </ul>

■JS

$( '#photoList li' ).on("click", function() { $(this).toggleClass( 'hover' ); $(this).siblings().removeClass( 'hover' ); });

■CSS

キャプションは写真全体をマスクして、枠内の下に配置します。

#photoList li { overflow: hidden; position: relative; width: 240px; } /* 写真の縦横比4:3固定 */ #photoList li:after { padding-top: 75%; display: block; content: ""; } #photoList li > .inner{ position: absolute; top: 0px; left: 0px; bottom: 0px; right: 0px; } #photoList li img { height: 100%; width: auto; } .mask { background: rgba(0,0,0,.7); bottom: -100%; left: 0; height: 100%; opacity: 1; position: absolute; -webkit-transition: .3s; transition: .3s; width: 100%; z-index: 2; } .cap { bottom: 0; color: #fff; padding: 10px; position: absolute; width: 100%; } #photoList li.hover .mask { bottom: 0 }

###試したこと
以下のような書き方ではダメでした。

$( '#photoList li:not(.cap a)' ).on("click", function() {

###補足情報(言語/FW/ツール等のバージョンなど)

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

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

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

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

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

guest

回答1

0

ベストアンサー

該当のa要素を押した時にも、イベントが伝わることでli要素に関連付けられたイベント(キャプションの開閉)が動いてしまっているので、該当のa要素を押した場合にイベントが伝搬しないようにします。

javascript

1// こちらはそのまま 2$( '#photoList li' ).on("click", function() { 3 $(this).toggleClass( 'hover' ); 4 $(this).siblings().removeClass( 'hover' ); 5}); 6 7// 追記 8$('.cap a').on("click", function() { 9 event.stopPropagation(); 10}); 11

投稿2016/09/12 15:25

yamato_hikawa

総合スコア2092

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

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

退会済みユーザー

退会済みユーザー

2016/09/12 15:33

ありがとうございます! 無事、キャプションが閉じずにリンクをクリックできました。 本当に助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問