• 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
385 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 (608,480 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 (355,160 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 (608,480 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 446 wizyt
pytanie zadane 26 stycznia 2016 w JavaScript przez ScriptyChris Mędrzec (190,170 p.)
0 głosów
1 odpowiedź 668 wizyt
pytanie zadane 21 maja 2025 w JavaScript przez TOWaD Mądrala (6,800 p.)
0 głosów
1 odpowiedź 242 wizyt
pytanie zadane 20 czerwca 2017 w JavaScript przez Radekol Bywalec (2,880 p.)

93,754 zapytań

142,714 odpowiedzi

323,359 komentarzy

63,348 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...