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

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

詳細はこちら
jQuery

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

Q&A

2回答

404閲覧

jQueryを使用したアコーディオン

Beginner_A

総合スコア19

jQuery

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

0グッド

1クリップ

投稿2019/10/01 05:26

FAQのコンテンツで、開閉マークのついたアコーディオンを制作中です。
解決できないことが2点あり、教えていただけると助かります。

①開閉マークが全体に効いてしまっている
②1つをクリックした後、もう1つクリックすると、"-"になってしまう

【html】

<dl> <dt class="active"><span class="faqQ">Q</span>質問?</dt> <dd>回答</dd> </dl> <dl> <dt class="active"><span class="faqQ">Q</span>質問?</dt> <dd>回答</dd> </dl>

【js】

$(function(){
$('#faq dt').click(function(){
$(this).next().slideToggle(300);
$('#faq dt').not(this).next().slideUp(300);
});
});
$(function() {
$('#faq dt').click(function() {
$('span').toggleClass('active');
});
});


コードは上記になります。
他サイトからのコピペしてきています。
jsは不慣れなため、色々試しても解決できないでいます。
よろしくお願いします。

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

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

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

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

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

guest

回答2

0

勉強中の未熟者ですが質問にトライさせていただきました。

css

1#faq dd { 2display: none; 3}

cssに上記を付け足して初期表示の回答を隠す

javascript

1$(function(){ 2$('#faq dt').click(function(){ 3 4$(this).next().slideToggle(300);//クリック対象の回答部分表示トグル 5$(this).children('span').toggleClass('active');//クリック対象の「+」「-」のトグル 6 7//※クリック対象以外の回答を非表示したくなければ以下2行削除 8$('#faq dt').not(this).next().slideUp(300);//クリック対象以外を非表示 9$('#faq dt').not(this).children('span').removeClass('active');//クリック対象以外を「-」に 10 11}); 12});

①開閉マークが全体に効いてしまっている

これがよくわからなかったのですが開閉ボタンクリック時にその他の回答を非表示したくなければ
ソース内コメントアウトしてある以下2行を削除してください

投稿2019/10/11 09:41

jinba

総合スコア310

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

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

Beginner_A

2020/01/17 04:40

解決方法をいただいていたのに、気づかずに申し訳ありませんでした。 確認してみますので、またお返事させていただきます。 ありがとうございました!!
guest

0

開閉マークが全体に効いてしまっている

「class="active"」が両方についているからでは?

1つをクリックした後、もう1つクリックすると、"-"になってしまう

アコーディオンの仕様次第ですが、どちらか一つしかアクティブにならないのであれば
その仕様であっているのでは?
ちなみに開閉マークはcssで付加しているのでしょうか?
そのあたりがわからないのでこれ以上の回答は難しいです

投稿2019/10/01 05:41

yambejp

総合スコア116690

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

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

Beginner_A

2019/10/01 05:49

早速の回答、ありがとうございます。 続けて質問させてください。 開閉マークは、cssで付加しています。 最後の"#faq .active::after"が、全体に効いてしまっているということでしょうか。 #faq span::before, #faq span::after { content: ''; display: block; width: 15px; height: 3px; border-radius: 5px; background: blue; position: absolute; right: 20px; top: 50%; transform: translateY(-50%); } #faq span::after { background: red; transform: translateY(-50%) rotate(90deg); transition: 0.5s; } #faq .active::after { transform: rotate(0); transition: 0.5s; } よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問