Autor Zpráva
Musilda
Profil
Dobrý den,

chci se zeptat na to, jak zavolat onclick na dynymicky vygenerovaný element.
Kód je doplněn do divu ajaxem a potřebuji být schopen kliknout na jeden ze tří divů, které mají stejnou třídu a udělat nějakou akci.

Tohle mi nefunguje:

var colorselect = document.getElementsByClassName( 'multiple-color-item' );
for (var i = 0; i < colorselect.length; i++) {
    colorselect[0].onclick = function() {
        console.log(colorselect[i]);
    };
}

jQuery používat nechci, tam to napíšu raz dva.
pcmanik
Profil
Musilda:
Udalosti štandartne "prebublávajú". Teda udalosť začne v konkrétnom elemente na ktorý sa kliklo a postupne prechádza až na window.
Riešenie v tomto prípade je pridať listener na rodičovský element a spracovávať kliknutia tu.

Povedzme že máš štruktúru:
<div id="parent">
    // Sem sa vklada dynamický obsah, pre ukazku vlozim 3 divka
    <div class="added-element" data-id="1">...</div>
    <div class="added-element" data-id="2">...</div>
    <div class="added-element" data-id="3">...</div>
</div>

Tak kód pre spracovanie bude vyzerať:
document.getElementById('parent').onclick = function(event) {
    if (event.target.className == 'added-element') {
        console.log('Clicked on element with id: ' + event.target.getAttribute('data-id'));
    }
};
Keeehi
Profil
Musilda:
Tohle mi nefunguje:
Ale funguje. Jen to nesmíš spouštět hned při načtení stránky ale až po tom, co se tam ty divy přidají.

Další možnost je ty divy mít připravené na místě už od začátku a schovat je. Ajaxem se jen doplní obsah a ukážou se.
Musilda
Profil
Díky moc za nasměrování.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0