Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

125
Vistas
How to add active class to clicked element and remove it from others?

I have the javascript written correctly to add and remove an active class from a clicked element, but when I click an element, the active class isn't removed from the sibling.

How do I click on one sibling (making it active) and remove the active class from other siblings?

let navItems = document.querySelectorAll('li');

navItems.forEach(navItem => {
  navItem.addEventListener('click', () => {
    navItem.classList.contains('active') ? navItem.classList.remove('active') : navItem.classList.add('active');
  });
});
ul {
  display: flex;
  max-width: 500px;
  margin: 0 auto;
  justify-content: space-between;
  margin-top: 1em;
}

ul li {
  list-style-type: none;
  padding: 5px 10px;
  cursor: pointer;
}

ul li.active {
  background: darkred;
  color: white;
}
<ul>
  <li class="active">Home</li>
  <li>About</li>
  <li>Products</li>
  <li>Sales</li>
  <li>Contact</li>
</ul>

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Why don't you use event delegation? This way:

menu.onclick = e => {
  var el = e.target;
  if (el.tagName != "LI") return;
  menu.querySelector(".active").removeAttribute("class");
  el.setAttribute("class", "active");
}
ul {
  display: flex;
  max-width: 500px;
  margin: 0 auto;
  justify-content: space-between;
  margin-top: 1em;
}

ul li {
  list-style-type: none;
  padding: 5px 10px;
  cursor: pointer;
}

ul li.active {
  background: darkred;
  color: white;
}
<ul id="menu">
  <li class="active">Home</li>
  <li>About</li>
  <li>Products</li>
  <li>Sales</li>
  <li>Contact</li>
</ul>

about 4 years ago · Juan Pablo Isaza Denunciar

0

You can make it easier on yourself by putting a classname on the UL tag so you can reference just those items inside it. Then, in your listener, reference the event argumet (I called it e)

let navItems = document.querySelectorAll('.navigation li');

navItems.forEach(navItem => {
  navItem.addEventListener('click', e => {
    document.querySelector('.navigation li.active').classList.remove('active');
    e.target.classList.add('active');
  });
});
ul {
  display: flex;
  max-width: 500px;
  margin: 0 auto;
  justify-content: space-between;
  margin-top: 1em;
}

ul li {
  list-style-type: none;
  padding: 5px 10px;
  cursor: pointer;
}

ul li.active {
  background: darkred;
  color: white;
}
<ul class='navigation'>
  <li class="active">Home</li>
  <li>About</li>
  <li>Products</li>
  <li>Sales</li>
  <li>Contact</li>
</ul>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda