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

Jak ustawić eventListener tylko na rodzica.

0 głosów
313 wizyt
pytanie zadane 21 czerwca 2019 w JavaScript przez 42savage Bywalec (2,630 p.)

Cześć i czołem 

Kolejne pytanie, tym razem jak sprawić by eventListener skupiał się tylko na divie rodzicu, a nie na obiektach w nim zawartych.

var image = document.querySelectorAll('.item');
image = [...image];
image.forEach( fullResInit );

var Storage = {};


function fullResInit(e){
    e.addEventListener("click", e => init(e.currentTarget));
}
function init(element){
    createContainer();
    getSrc(element);
    createImage();
}
function getSrc(element){
    var fullSource = element.src;
    var source = fullSource.slice(19);
    Storage.source = source;
}


function createContainer(){
    var container = document.createElement('div');
    container.className = "imageContainer";
    document.body.appendChild(container);
    container.addEventListener("click", ()=>{
        container.remove();
    })
    var message = document.createElement("p");
    message.className = "close-message";
    message.innerHTML = "kliknij gdziekolwiek aby wyłączyć podgląd zdjęcia."
    container.appendChild(message);
    Storage.container = container;
}

function createImage(){
    var img = document.createElement('img');
    img.className = "fullResImage";
    img.src = Storage.source;
    Storage.container.appendChild(img);
}

Kliknięcie w zdjęcie, czyli obiekt img powoduje usunięcie kontenera, a ja chce, aby klikając obok zdjęcia kontener się usuwał.

I take małe pytanie na marginesie, korzystanie z czegoś takiego, to dobra praktyka?

var Storage = {};
    Storage.container = container;
    img.src = Storage.source;

 

1 odpowiedź

+1 głos
odpowiedź 21 czerwca 2019 przez Comandeer Guru (607,330 p.)
wybrane 21 czerwca 2019 przez 42savage
 
Najlepsza

Najłatwiej byłoby po prostu filtrować, czy event.target to ten sam element, do którego przypięto listener.

Co do Storage: to po prostu obiekt przechowujący stan aplikacji. Nie bardzo wiem, czemu miałoby się z tego nie korzystać?

komentarz 21 czerwca 2019 przez adrian17 Mentor (354,880 p.)
TBH nie do końca rozumiem ani problemu, ani Twojej odpowiedzi. Mam wrażenie że odpowiedzią zarówno na pytanie jak i Twoją odpowiedź jest event.currentTarget, które... już jest w kodzie.
komentarz 21 czerwca 2019 przez Comandeer Guru (607,330 p.)
A to inna rzecz ;)
1
komentarz 21 czerwca 2019 przez Kamil Łydka Stary wyjadacz (13,600 p.)
A może chodzi mu o parentNode czy parentElement?
komentarz 21 czerwca 2019 przez 42savage Bywalec (2,630 p.)
 if(event.target == container){
        container.remove();
        }

dobra, użyłem tego event.target i działa jak należy.

Podobne pytania

+1 głos
4 odpowiedzi 373 wizyt
pytanie zadane 26 stycznia 2016 w JavaScript przez ScriptyChris Mędrzec (190,190 p.)
0 głosów
1 odpowiedź 494 wizyt
0 głosów
1 odpowiedź 195 wizyt
pytanie zadane 20 czerwca 2017 w JavaScript przez Radekol Bywalec (2,880 p.)

93,632 zapytań

142,556 odpowiedzi

323,056 komentarzy

63,139 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2523p. - Maurycy W
  9. 2459p. - CC PL
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1851p. - Mariusz Fornal
  13. 1811p. - rafalszastok
  14. 1600p. - Rafał Trójniak
  15. 1588p. - Tomasz Bielak
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...