Strona 1 z 1

Jak obsłużyć event dla kilku elementów

Napisane: wtorek, 12 lipca 2016, 21:27
przez mario88
Witam,
mam taki problem że chciałbym obsłużyć klikanie w kilka elementów i żeby dla każdego odpaliło się to samo zdarzenie.

Gdy kliknę na nagłówek obojętnie który, to ma zniknąć jego sąsiedni div.

Moja próba rozwiązania tego: https://jsfiddle.net/8fhcs0o7/5/

Kiedyś udało mi się coś takiego osiągnąć ale nie pamiętam jak to zrobiłem i za nic nie mogę sobie przypomnieć.
Proszę o pomoc lub wskazówkę.

Pozdrawiam

Re: Jak obsłużyć event dla kilku elementów

Napisane: wtorek, 12 lipca 2016, 22:25
przez Morfidon
Hej,

W zmiennej headings masz tablicę, a nie poj. zmienną. Przejdź przy pomocy po wszystkich elementach tablicy i będzie ok :)

Pozdrawiam,

Arek

Re: Jak obsłużyć event dla kilku elementów

Napisane: środa, 13 lipca 2016, 00:04
przez mario88
Udało mi się osiągnąć to co chciałem dzięki Twojej wskazówce:

https://jsfiddle.net/1xtmt92e/2/

W pętli for te przypisanie eventu działa tak że parser przeleci przez kod i przypisze każdemu elementowi z tablicy ten event? Myślałem że to nasłuchiwanie dzieje się w czasie rzeczywistym i że nie można go przypisać i on już zostanie z elementem na stałe :)
Po drugie tego if'a napisałem metodą prób i błędów bo nie za bardzo rozumiem jego logikę, chyba tu coś działa inaczej ze względu na nasłuchiwacz w tym if'e? Gdyby nie klikanie w element ten if wyglądałby inaczej prawda?

Re: Jak obsłużyć event dla kilku elementów

Napisane: środa, 13 lipca 2016, 00:40
przez Morfidon
Bo on zostanie z elementem na stałe :) Jak się wczyta strona to dodasz event dla wszystkich elementów.

Nie powinieneś usuwać całej klasy, a wyłącznie tylko część class :-) pokombinuj z substring :-)

Re: Jak obsłużyć event dla kilku elementów

Napisane: środa, 13 lipca 2016, 05:05
przez mario88
Czemu usuwanie całej klasy jest złe? :)
Lepiej zastosować:

Code: Zaznacz cały

    if(this.nextElementSibling.className == ""){
      this.nextElementSibling.className = "ukryty";
    } else {
      this.nextElementSibling.className = "";
    }
?

Re: Jak obsłużyć event dla kilku elementów

Napisane: środa, 13 lipca 2016, 12:44
przez Morfidon
className też jest złe. Zastanów się co by się stało jeśli ten element miałby jakieś inne klasy, które nadawałaby wygląd temu elementowi? ;)

Re: Jak obsłużyć event dla kilku elementów

Napisane: środa, 13 lipca 2016, 18:26
przez mario88
A coś takiego?
https://jsfiddle.net/1xtmt92e/4/
Teraz klas nie rusza :)

Re: Jak obsłużyć event dla kilku elementów

Napisane: środa, 13 lipca 2016, 18:58
przez Morfidon
Teraz jest ok :) Z klasami też możesz to zrobić, tylko wtedy musisz pamiętać o tym aby usunąć część 'stringa' do tego służą metody z lekcji 50 :)