통합검색

Javascript

[Javascript] FAQ toggle

  • 2025.07.25 15:29:46
 [!]HTML[/!]
 
<div class="faq_list">
    <?php for ($i=0; $i < 5; $i++) { ?>
    <dl>
        <dt><em>Q</em><strong>창업비용은 얼마나 들고, 최소 얼마부터 시작 가능한가요?</strong><i class="axi axi-keyboard-arrow-down"></i></dt>
        <dd><div class="nostyle">네, 담당 슈퍼바이저 배정, 마케팅 지원, 메뉴 리뉴얼 등 오픈 이후에도 본사에서 지속적으로 운영을 관리합니다.</div></dd>
    </dl>
    <?php } ?>
</div>




 [!]Jquery[/!]
 
//faq list
const faq_toggle = {
    init(){
        this.action();
    },
    action(){
        const $btn = document.querySelectorAll('.faq_list > dl > dt');
        if ($btn.length === 0) return;
        $btn.forEach(el => {
            el.addEventListener('click', e => {
                e.preventDefault();
                let parent_dl = el.closest('dl'); //클릭한 박스
                let hasClass = parent_dl.classList.contains('on'); //클릭한 박스에 class 있는지 확인

                // 기존에 열린박스 있으면 전부 닫기
                const dl_on = document.querySelector('.faq_list > dl.on');
                if (dl_on) {
                    dl_on.classList.remove('on');
                    slideUp(dl_on.lastElementChild, 200);
                }

                if (!hasClass){ //안열린 박스 클릭
                    parent_dl.classList.add('on');
                    slideDown(el.nextElementSibling, 200);
                }
            })
        })
    }
}
document.addEventListener('DOMContentLoaded', () => {
    faq_toggle.init();
});