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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

Q&A

1回答

1667閲覧

data属性を使用した、一つ開けると他は閉じるアコーディオン

tanap

総合スコア11

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2021/02/28 12:15

https://codepen.io/125naroom/pen/PMZZRx

こちらのサイトを参考に、
1つ開けると他は閉じるアコーディオンを作成したいのですが、
data属性を使用している影響?でアコーディオンを1つ1つ開閉しないといけなくなっています。

デザインの都合上、
ボタンとアコーディオンは兄弟要素としてではなく、
別の要素として実装したいです。

HTML

1<div class="board_item"> 2 <div class="board_list"> 3 <ul> 4 <li> 5 <div class="btn" data-target="con1"></div> 6 </li> 7 <li> 8 <div class="btn" data-target="con2"></div> 9 </li> 10 <li> 11 <div class="btn" data-target="con3"></div> 12 </li> 13 </ul> 14 </div> 15 <div class="accordion_list"> 16 <ul> 17 <li class="accordion_item" id="con1"> 18 <p>これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。</p> 19 </li> 20 <li class="accordion_item" id="con2"> 21 <p>これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。</p> 22 </li> 23 <li class="accordion_item" id="con3"> 24 <<p>これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。段落テキストをここに記載します。これはダミーテキストです。</p> 25 </li> 26 </ul> 27 </div> 28</div>

js

1var $boardBtn = $('.board_btn'); 2 3$boardBtn.on('click', function() { 4 $boardBtn.toggleClass('active'); 5 var $accordion = $('#' + $(this).attr('data-target')); 6 $accordion.slideToggle(); 7 $boardBtn.not($(this)).removeClass('active'); 8 $accordion.not($(this)).next().slideUp(); 9});

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

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

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

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

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

guest

回答1

0

なかなか回答が付かないのは、提示のコードが間違っているので動作しないからでしょうね。
あと、CSSコードも必要ですね。それがないと検証できないので。

まずは、HTMLの class="btn" を class="board_btn" に変更してください。
JSコードは下記でいいでしょう。

js

1var $boardBtn = $('.board_btn'); 2var $accordion = $('.accordion_item'); 3 4$boardBtn.on('click', function() { 5 $boardBtn.toggleClass('active'); 6 var $thisAccordion = $('#' + $(this).attr('data-target')); 7 $thisAccordion.slideToggle(); 8 $boardBtn.not($(this)).removeClass('active'); 9 $accordion.not($thisAccordion).slideUp(); 10});

下記のサンプルはCSSは最低限のものを設定してます。

CodePenサンプル

投稿2021/03/02 02:35

hatena19

総合スコア33620

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問