• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

event do kilku elementów o tej samej klasie

Object Storage Arubacloud
0 głosów
465 wizyt
pytanie zadane 7 września 2018 w JavaScript przez matizuu Obywatel (1,100 p.)

Mam menu, i niewidoczną zawartość diva z kontentem.

Po kliknięciu opcji w menu, chcę dodać klasę do tej opcji i pokazać kontent.

Pierwsza sprawa jak dodać event do tych wszystkich elementów z menu na raz?

<div class="content">
  <div class="menu">
    <div class="opcja">Opcja1</div>
    <div class="opcja">Opcja2</div>
    <div class="opcja">Opcja3</div>
  </div>
  <div class="opcja1_content hidden">Zawartość opcji 1</div>
  <div class="opcja2_content hidden">Zawartość opcji 2</div>
  <div class="opcja3_content hidden">Zawartość opcji 3</div>
</div>

 

.menu {
  display: flex;
}

.opcja {
  background-color: blue;
  color: white;
  margin: 5px;
  padding: 5px 15px;
}

.active {
  background-color: red;
}

.hidden {
  display: none;
}

 

document.querySelector('.opcja').addEventListener('click', (e) => {
 document.querySelector('.opcja').addClass('active');
});

Powyższy zapis dodaje mi event na pierwszy element.

Druga sprawa jak powiązać kontent z konkretną opcją w menu? (w sensie, że jak kliknę pierwszą opcję to pokaże zawartość do pierwszej opcji)

komentarz 7 września 2018 przez Kondzio Mądrala (5,230 p.)
Zamiast querySelector, wystarczy użyć querySelectorAll.

3 odpowiedzi

+2 głosów
odpowiedź 7 września 2018 przez Danrox Bywalec (2,370 p.)
wybrane 11 września 2018 przez matizuu
 
Najlepsza
Jest coś takiego jak event delegation.

Tutaj masz przykład: https://codepen.io/Danrox/pen/eLeNbm
komentarz 7 września 2018 przez matizuu Obywatel (1,100 p.)
To jest dobre, ale dodatkowo jak kliknę na 'Opcja 2', to muszę ukryć kontent pozostałych opcji.

 

Myślałem, że może tak zadziała, ale nie :( -https://codepen.io/anon/pen/XPzdXw
komentarz 7 września 2018 przez k.wichura Pasjonat (19,870 p.)

wszystko działa. Dobry kod napisałeś, ale nie wiem czy używasz jquery(jezeli tak, to po co) czy co, ale zamiast removeClass powinno być classList.remove i tak samo dla add 

const options = document.querySelectorAll('.optionH');
const container = document.querySelector('.container');
container.addEventListener('click', e => {
  const el = e.target;
  if(el.className === 'option') {
    options.forEach((element)=>{
      element.classList.add('hidden');
    });
document.querySelector(`.${el.className}${el.dataset.number}`).classList.remove('hidden');
  }
});

 

komentarz 7 września 2018 przez pablop76 VIP (123,180 p.)
Nie brnął bym w tą strukturę html. Zrobiłbym listę z kotwicami do id. Pobranie odnośnika wskaże docelowy element, który odkrywamy a pobranie wszystkich równierz pozwoli ukryć wszystkie treści.
+1 głos
odpowiedź 7 września 2018 przez k.wichura Pasjonat (19,870 p.)
const twojeElementy = document.querySelectorAll('.klasaElemetow');

twojeElementy.forEach((element)=>{
element.addEventListener('click', callback);
})

 

0 głosów
odpowiedź 7 września 2018 przez Greeenone Pasjonat (16,100 p.)
Zamiast querySelector użyj querySelectorAll

Podobne pytania

0 głosów
1 odpowiedź 622 wizyt
pytanie zadane 1 października 2016 w JavaScript przez Haroy Użytkownik (550 p.)
0 głosów
1 odpowiedź 910 wizyt

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...