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

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

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

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

HTML

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

CSS

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

Q&A

解決済

3回答

3045閲覧

アコーディオンを複数設置して個々に開閉したい

y_lu_wt

総合スコア1

jQuery

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2021/09/08 05:30

複数のアコーディオンを設置し、個々に開閉可能にしたいと考えています。

・デフォルトでは全てが閉じている
・クリックすると、クリックされたものだけ開く
・開いているものは、もう一度クリックすると閉じる

以下のサイトを参考に作成したものの
複数の場合は1つをクリックすると他も全て開いてしまうようです。
https://achiyochi.jp/web/readmore-js/

複数のアコーディオンを実装方法についてご教示いただけますと幸いです。
よろしくお願いします。

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

エラーメッセージ

該当のソースコード

html

1<div id="text-wrap"> 2 <div class="textarea hide-text"> 3  <p>ここに文字が隠れている</p> 4 </div> 5 <button class="readmore">READ MORE</button> 6</div>

css

1.hide-text { 2 display: none; 3} 4.readmore{ 5 display: block; 6 } 7 8button.readmore{ 9 height: 80px; 10 position: relative; 11 width: 90px; 12 margin: 10px auto; 13 display: block; 14 background-color: transparent; 15 color: #747474; 16 font-size: 11px; 17 letter-spacing: 1px; 18 padding-bottom: 45px; 19 border: none; 20 outline: 0; 21 transition: .5s; 22 -erbkit-transition: .5s; 23 24} 25 26button.readmore::after { 27 content: " "; 28 position: absolute; 29 width: 20px; 30 height: 20px; 31 border-top: solid 1px #747474; 32 border-right: solid 1px #747474; 33 transform: rotate(135deg); 34 -webkit-transform: rotate(135deg); 35 right: 35px; 36 top: 25px; 37 transition: .5s; 38 -erbkit-transition: .5s; 39} 40 41button.readmore:hover::after { 42 top: 40px; 43} 44 45 46.on-click { 47 color: transparent!important; 48} 49 50.on-click { 51 transform: rotate(-180deg); 52 -webkit-transform: rotate(-180deg); 53} 54 } 55

javascript

1$(function(){ 2 $(".readmore").on("click", function() { 3 $(this).toggleClass("on-click"); 4 $(".hide-text").slideToggle(500); 5 }); 6});

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

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

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

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

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

guest

回答3

0

開く要素をクラス名で指定するのではなく、位置関係(直前の要素)で指定するといいでしょう。

js

1$(function(){ 2 $(".readmore").on("click", function() { 3 $(this).toggleClass("on-click"); 4 $(this).prev().slideToggle(500); 5 }); 6});

投稿2021/09/08 05:56

hatena19

総合スコア34075

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

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

0

すべての.hide-textにslideToggle(500)が適用されてしまっているので、兄弟要素のみに適用するようにします。

jQuery

1$(function(){ 2 $(".readmore").on("click", function() { 3 $(this).toggleClass("on-click"); 4 $(this).siblings(".hide-text").slideToggle(500); 5 }); 6});

投稿2021/09/08 05:52

oran

総合スコア50

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

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

0

ベストアンサー

javascript

1$(function(){ 2 $(".readmore").on("click", function() { 3 $(this).toggleClass("on-click").prev(".hide-text").slideToggle(500); 4 }); 5});

投稿2021/09/08 05:50

yambejp

総合スコア116734

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

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

y_lu_wt

2021/09/08 05:51

できました!本当に本当にありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問