前提・実現したいこと
jQueryを使用してアコーディオンメニューでのFAQセクションを作っています。
4行目以下を初期段階で非表示にし、「他の質問を見る」ボタンを押すことで4,5行目を非表示→表示されるようにしたいのですがうまくいきません。
該当のソースコード
【HTML】
<div class="txt">
<input type="checkbox" id="faq1" class="faq_hidden"> <label for="faq1" class="faq_open">質問1</label> <label for="faq1" class="faq_close"> <p><strong>A. </strong>回答1</p> </label> <input type="checkbox" id="faq2" class="faq_hidden"> <label for="faq2" class="faq_open">質問2</label> <label for="faq2" class="faq_close"> <p><strong>A. </strong>回答2</p> </label> <input type="checkbox" id="faq3" class="faq_hidden"> <label for="faq3" class="faq_open">質問3</label> <label for="faq3" class="faq_close"> <p><strong>A. </strong>回答3</p> </label> <input type="checkbox" id="faq4" class="faq_hidden"> <label for="faq4" class="faq_open">質問4</label> <label for="faq4" class="faq_close"> <p><strong>A. </strong>回答4</p> </label> <input type="checkbox" id="faq5" class="faq_hidden"> <label for="faq5" class="faq_open">質問5</label> <label for="faq5" class="faq_close"> <p><strong>A. </strong>回答5</p> </label> <p class="more">他の質問を見る</p> </div>
【CSS】(必要そうな部分のみ抜粋)
.faq_hidden {
display: none;
}
.faq_open {
display: block;
.faq_close {
display: block;
height: 0;
overflow: hidden;
padding: 0;
opacity: 0;
}
.faq_hidden:checked + .faq_open + .faq_close {
height: auto;
opacity: 1;
padding: 10px;
}
試したこと
ネット上で見つけた以下記述を参考に試みましたが、参考はリストアイテムに適用だったので勝手が違い躓きました。
$(function () {
let hideFaq = '.faq_hidden li:nth-of-type(n+4)';
$(hideFaq).hide();
$('.moreBtn').click(function () {
$(hideFaq).toggle();
if ($(hideFaq).css('display') == 'none') {
$('.moreBtn').text('他の質問を見る');
} else {
$('.moreBtn').text('CLOSE');
}
return false;
});
});
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/20 11:13
2021/09/20 12:49
2021/09/21 10:15