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

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

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

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

HTML

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

Q&A

解決済

1回答

2624閲覧

アコーディオンを閉じた状態で表示したい

sacoz

総合スコア1

jQuery

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

HTML

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

0グッド

0クリップ

投稿2021/11/03 02:10

編集2021/11/03 03:49

前提・実現したいこと

アコーディオンメニューをサイトを参考にjQueryで作っています。
読み込んだ際は全て閉じた状態にしたいのですが
最初にページが表示される際一番上のメニューが開いた状態になってしまいます。

該当のソースコード

html

1 2<div class="accordion animated"> 3<div class="acd-group"> 4<a href="#" class="acd-heading">アコーディオン1</a> 5<div class="acd-des">内容が入ります。</div> 6</div> 7<div class="acd-group"> 8<a href="#" class="acd-heading">アコーディオン2</a> 9<div class="acd-des">内容が入ります。</div> 10</div> 11<div class="acd-group"> 12<a href="#" class="acd-heading">アコーディオン3</a> 13<div class="acd-des">内容が入ります。</div> 14</div> 15</div>

css

1 2.accordion .acd-group .acd-heading:before { font-family: fontawesome; } 3.accordion .acd-group .acd-heading:before { cursor: pointer; position: absolute; top: 6px; right: 20px; display: block; padding: 3px 6px 2px; content: "\f105"; font-size: 22px; line-height: 38px; } 4.accordion .acd-group > .acd-heading > span { margin-right: 15px; } 5.accordion .acd-heading { font-weight: 500; position: relative; padding: 20px !important; color: #353535; line-height: normal; cursor: pointer; background-color: #1abc9c; margin-bottom: 10px; display: block; font-family: 'Montserrat', sans-serif; text-transform: uppercase; border-radius: 3px; } 6.acd-des { padding: 0 20px 20px 0; } 7.accordion .acd-group.acd-active .acd-heading, .accordion .acd-group .acd-heading:hover { color: #84ba3f; } 8.accordion .acd-group.acd-active .acd-heading:before { content: "\f107"; } 9.accordion .acd-group.acd-active .acd-heading span { color: #fff; } 10 11.accordion.animated .acd-group .acd-heading { box-shadow: none; border:none; font-size: 18px; margin-bottom: 0; color:#363636; text-transform: inherit; font-weight: 700; padding: 20px 0px 0; } 12.accordion.animated .acd-group.acd-active .acd-heading { font-size: 28px; color: #84ba3f; margin-bottom: 20px; background: none !important;} 13.accordion.animated .acd-group .acd-heading:hover{background: none !important; color: #84ba3f;} 14.accordion.animated .acd-group .acd-heading::before { display: none; } 15.accordion.animated .acd-group .acd-des { padding: 0 30px 20px; }

jQuery

1 (function($){ 2 "use strict"; 3 4 $('.accordion').each(function (i, elem) { 5 var $elem = $(this), 6 $acpanel = $elem.find(".acd-group > .acd-des"), 7 $acsnav = $elem.find(".acd-group > .acd-heading"); 8 $acpanel.hide().first().slideDown("easeOutExpo"); 9 $acsnav.first().parent().addClass("acd-active"); 10 $acsnav.on('click', function () { 11 if(!$(this).parent().hasClass("acd-active")){ 12 var $this = $(this).next(".acd-des"); 13 $acsnav.parent().removeClass("acd-active"); 14 $(this).parent().addClass("acd-active"); 15 $acpanel.not($this).slideUp("easeInExpo"); 16 $(this).next().slideDown("easeOutExpo"); 17 }else{ 18 $(this).parent().removeClass("acd-active"); 19 $(this).next().slideUp("easeInExpo"); 20 } 21 return false; 22 }); 23 });

jQuery触り始めたばかりで、初歩的な質問で申し訳ありません。
ご教示いただけると助かります。

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

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

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

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

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

itagagaki

2021/11/03 02:46

提示されているコードではアコーディオンメニュー自体が再現できません。 確認してみてください。 もしかしたらCSSも必要なのかもしれません。
sacoz

2021/11/03 05:29

ご指摘ありがとうございます! CSSも追加いたしました!
guest

回答1

0

ベストアンサー

js

1 $acpanel.hide().first().slideDown("easeOutExpo");

上記の.first().slideDown("easeOutExpo");で最初のメニューを表示していますので、当然の動作です。これを削除すれば表示されないでしょう。


上記だけだと、ページを読み込んだとき、メニューがすべて表示された状態で開き、すぐに閉じるという動作になります。
これが、想定した動作ならいいのですが、最初から非表示にしたいのなら、jQueryで非表示にするのではなく、
CSSで非表示にしておくといいでしょう。

css

1 .acd-group > .acd-des { 2 display: none; 3}

js

1 $acpanel.hide() //.first().slideDown("easeOutExpo"); 後半削除 2// $acsnav.first().parent().addClass("acd-active"); ここも削除

投稿2021/11/03 03:31

編集2021/11/03 03:40
hatena19

総合スコア34075

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

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

sacoz

2021/11/03 06:11

CSS追加し、jQueryの該当箇所を削除で動作しました!! 本当に助かりました。 自分でも更に知識深めたいと思います。 丁寧に教えていただきありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問