Ich habe mehrere Dropdown-Elemente in meiner Fußzeile. Ich möchte die „aktive“ Klassenliste speziell für das angeklickte Element umschalten. Mein Code lautet bisher:
Ich habe mehrere Behälter wie diesen:
let dropDowns = document.querySelectorAll('.footer-arrow-container') let dropDownList = document.querySelector('.footer-items-list') dropDowns.forEach((dropDown) => { dropDown.addEventListener('click', () => { dropDownList.closest('ul').classList.toggle('active') }) })
.footer-items-list { display: none; } .active { display: flex; }
<div class="footer-item-container"> <div class="footer-arrow-container"> <!-- dropDowns ; querySelectorAll --> <h2 class="footer-item-title"> Test </h2> <img/> </div> <div class="footer-dropdown-list-container"> <ul class="footer-items-list"> <!-- dropDownList : querySelector --> <li>List item 1</li> <li>List item 2</li> </ul> </div> </div> <div class="footer-item-container"> <div class="footer-arrow-container"> <!-- dropDowns ; querySelectorAll --> <h2 class="footer-item-title"> Test </h2> <img/> </div> <div class="footer-dropdown-list-container"> <ul class="footer-items-list"> <!-- dropDownList : querySelector --> <li>List item 1</li> <li>List item 2</li> </ul> </div> </div>
Derzeit wählt dies nur „ul“ aus der ersten Liste aus. Es funktioniert nicht mit separaten anderen Listen, daher habe ich es in JavaScript offensichtlich falsch ausgewählt und bin mir nicht sicher, wie ich das am besten machen soll.
HTML 结构不清楚。我相信您的话,每个页脚项目都具有相同的结构,并在此示例中放置了两个。基本上,代码向上到共同祖先,然后向下到子级。