recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment basculer individuellement la liste de classes d'un élément de menu à l'aide de JavaScript ?

J'ai plusieurs éléments déroulants dans mon pied de page. Je souhaite basculer la liste de classes "actives" spécifiquement pour l'élément cliqué. Mon code jusqu'à présent est :

J'ai plusieurs conteneurs comme celui-ci :

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>

Actuellement, cela sélectionne simplement "ul" dans la première liste. Cela ne fonctionne pas avec d'autres listes distinctes, donc je l'ai évidemment mal choisi en JavaScript et je ne suis pas sûr de la meilleure façon de procéder.

P粉949848849P粉949848849324 Il y a quelques jours367

répondre à tous(1)je répondrai

  • P粉510127741

    P粉5101277412024-02-18 13:16:47

    La structure HTML n’est pas claire. Je vous crois sur parole que chaque élément de pied de page a la même structure et en a placé deux dans cet exemple. En gros, le code remonte jusqu'à l'ancêtre commun puis descend jusqu'aux enfants.

    let dropDowns = document.querySelectorAll('.footer-arrow-container')
    
    dropDowns.forEach((dropDown) => {
      dropDown.addEventListener('click', () => {
        dropDown.closest('.footer-item-container').querySelector('.footer-items-list').classList.toggle('active')
      })
    })
    .footer-items-list {
      display: none;
    }
    
    .active {
      display: flex;
    }
    
    

    répondre
    0
  • Annulerrépondre