🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
jQuery

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

HTML

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

CSS

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

Q&A

解決済

2回答

547閲覧

toggleClassで上下矢印が逆転しないようにしたい

lingwood

総合スコア40

jQuery

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2019/09/09 03:21

編集2019/09/09 04:30

前提・実現したいこと

初歩的なことですみませんが、手こずっています。
toggleClassを使ってアコーディオンパーツを作っています。

上下にボタンを設置して以下のような構成になっています。

-----------------------------
上が開く+ 下向き矢印

「この間にコンテンツ」

下に閉じるボタン
-----------------------------

上のボタンを押すと矢印が上向きになります。

上のボタンだけで操作する場合は問題ないのですが、
下のボタンで閉じるを押すと、矢印が上向きのままアコーディオンが
閉じてしまい、逆転するという現象になります。

下の閉じるボタンを押した際にもちゃんと矢印が
戻る?ような形で開く時と閉じた時の整合性を
取りたいので、すみませんが教えていただけませんでしょうか。

現在のコード

【JQuery】 $(function(){ $( ".opener__btn span" ).click(function(){ $(".detail").slideToggle('slow'); $(this).toggleClass("active"); }); }); 【HTML】 <div class="opener__btn"><span>詳しく<br>見る</span></div> <div class="detail"> コンテンツ </div> <div class="opener__btn close"><span>閉じる</span></div>

### 追記

CSS

1.opener__btn span { 2 display: inline-block; 3 background-image: url(../images/common/icon-arrow-headdown-b.png); 4 background-repeat: no-repeat; 5 background-size: 24px 20px; 6 background-position: center bottom 4px; 7 cursor: pointer; 8} 9.opener__btn span.active { 10 background-image: url(../images/common/icon-arrow-headup-b.png); 11 background-repeat: no-repeat; 12 background-size: 24px 20px; 13 background-position: center bottom 4px; 14} 15.opener__btn.close span { 16 background-image: none; 17}

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

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

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

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

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

yambejp

2019/09/09 03:25 編集

矢印がわかるサンプルをつけてください 矢印自体画像?テキスト?
m.ts10806

2019/09/09 03:49

CSSもご提示ください
lingwood

2019/09/09 04:33

yambejpさん、m.ts10806さん 目に留めていただいてありがとうございます! 矢印は>を90度回させたよくあるものです。 activeにしたときバックグランドのimgが切り替わるというシンプルなもので 一旦テスト実装しています。 使わなければ全然問題ないのですが、せっかくなのでボタンを押すと切り替わるものにしたいと思いました。 よろしくお願いします。
guest

回答2

0

下記でいいかと。

js

1$(function(){ 2 $( ".opener__btn span" ).click(function(){ 3 $(".detail").slideToggle('slow'); 4 $(".opener__btn span").toggleClass("active"); 5 }); 6});

$(this).toggleClass("active");だとクリックした要素($(this))だけにClassを付加/削除します。

$(".opener__btn span").toggleClass("active");だと.opener__btn span要素が対象になります。

追記

閉じたときに「閉じる」ボタンが表示されているのは不自然なので、下記の方がいいかも。

js

1$(function(){ 2 $( ".opener__btn span" ).click(function(){ 3 $(".detail").slideToggle('slow'); 4 $(".opener__btn span").toggleClass("active"); 5 $(".opener__btn.close span").toggle(); 6 }); 7});

投稿2019/09/09 06:31

編集2019/09/09 07:05
hatena19

総合スコア34073

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

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

lingwood

2019/09/09 06:51

hatena19さん ご回答ありがとうございます! え?って思ったんですがテストしたらできました! よくよく考えれば、確かに!ということでお恥ずかしい限りです。 ちょっとした思考の切り換え方の部分って大きいですね。 よりコンパクトになってありがたく思います。 ベストアンサーに選べずすみません。 またの際にもよろしくお願いします!!
yambejp

2019/09/09 07:05

「閉じる」と「詳しく見る」のトグルでは明らかに機能が違うと思います この処理が希望でしたら「閉じる」をおして、閉じているときに 「開く」に変わるようにしたほうがよいでしょう ただ、同じ機能をそんなに近くに盛り込んでもしょうがないので 閉じるは閉じるだけでいいと思いますけどね・・・
hatena19

2019/09/09 07:10

「閉じる」ボタンなら閉じているときは非表示にするのが自然な動作かと思いますので、修正コードを追記しました。
lingwood

2019/09/09 07:20

yambejpさん、hatena19さん いろいろとご考案いただきまして、本当にありがとうございます。 小生の説明不足のせいでいろいろとすみません。 閉じるボタンはdetailのコンテンツ領域に入っているため、 初期状態では非表示です。 コンテンツが長いため本来こういう見せ方が良いのかは微妙なんですが・・・ ただ、確かに明らかに機能が違いますので、いっしょくたに捉えてしまってすみません。 あまり詳しくないので、できた部分でしか見えておりませんでyambejpさんにご不快な 思いをさせてしまったのではと申し訳なく思います。 今回やりたかったことは、上記の方法で解決できておりますし、 素晴らしいご回答をいただきましたことに深く感謝しております! ありがとうございます!
lingwood

2019/09/09 07:22

hatena19さん 追記コードを授けていただきまして、ありがとうございます!! こちらも今後のためにもしっかり備忘録に控えさせていただきたいと思います。 ありがとうございました!
guest

0

ベストアンサー

「閉じる」ボタンはトグルしなくて閉じるだけでよいのでしょうか?

javascript

1<script> 2$(function(){ 3 $( ".opener__btn span" ).on('click',function(){ 4 $(".detail").slideToggle('slow'); 5 $(this).toggleClass("active"); 6 }); 7 $( ".close" ).on('click',function(){ 8 $(".detail").slideUp('slow'); 9 $(".opener__btn span").addClass("active"); 10 }); 11}); 12</script> 13<div class="opener__btn"><span>詳しく<br>見る</span></div> 14 <div class="detail"> 15 コンテンツ 16 </div> 17<div class="close"><span>閉じる</span></div>

投稿2019/09/09 04:37

yambejp

総合スコア116661

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

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

lingwood

2019/09/09 05:29

yambejpさん 遅くなってすみません。ありがとうございます! 今から試してきます!! 閉じるボタンはそのままでいいかな~って思ってます!
lingwood

2019/09/09 06:30

yambejpさん ありがとうございました!! .slideUpを使うんですね。 最初できなかったんですが、 $(".opener__btn span").addClass("active"); → .removeClassにしたら最終的にうまく動きました!! 本当にありがとうございました! すごく助かりました、勉強になりました! またの際にもよろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問