Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

129
Visualizações
Nested dropdrown menu

I'm trying to build a nested dropdown menu with javascript and click event. My html is this:

<ul>
    <li id="menu-item-439" class="dropdown">
        <a href="#">hostelería</a>
        <ul class="sub-menu">
            <li id="menu-item-459">
                <a href="#">Comanderos</a>
            </li>
           <li id="menu-item-457" class="dropdown">
               <a href="#">Venta online</a>
               <ul class="sub-menu">
                   <li>
                       <a href="#">PortalRest Pedidos</a>
                   </li>
               </ul>
            </li>
        </ul>
    </li>
</ul>

and my javascript:


document.querySelectorAll('.dropdown').forEach(i => {
    i.addEventListener('click', (e) => {
        i.classList.toggle('show');
    })
});

The problem is in the nested "dropdown" class. When i click in "child dropdown" (id="menu-item-457") toogle not only affects that element but also affects the parent (id="menu-item-439")

Thanks!!

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Here

HTML

<ul>
    <li id="menu-item-439" class="dropdown">
        <a href="#" onclick="toggle()">hostelería</a>
        <ul class="sub-menu">
            <li id="menu-item-459">
                <a href="#">Comanderos</a>
            </li>
           <li id="menu-item-457" class="dropdown">
               <a href="#"  onclick="toggle2()">Venta online</a>
               <ul class="sub-menu">
                   <li>
                       <a href="#">PortalRest Pedidos</a>
                   </li>
               </ul>
            </li>
        </ul>
    </li>

</ul>

JS

let n=0, n2=0;

function toggle() {
n++;
if (n%2==0) {
document.getElementsByClassName("sub-menu")[0].style.display="none";
}
else {
document.getElementsByClassName("sub-menu")[0].style.display="block";

}
}
function toggle2() {
n2++;
if (n2%2==0) {
document.getElementsByClassName("sub-menu")[1].style.display="none";
}
else {
document.getElementsByClassName("sub-menu")[1].style.display="block";

}
}

CSS

.sub-menu {display: none}

If you wanted same with JQuery toggle method, then js should be like this

JS

function toggle() {
document.getElementsByClassName("sub-menu")[0].toggle();
}
function toggle2() {
document.getElementsByClassName("sub-menu")[1].toggle();
}
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda