Heute lernst du:
Am Ende kannst du komplexe UI-Interaktionen effektiv steuern.
Ein einzelner Event Listener am Eltern-Element:
document.querySelector("#parent").addEventListener("click", e => {
if(e.target.tagName === "BUTTON") alert("Button geklickt!");
});
Neue Elemente werden durch Delegation automatisch unterstützt:
const parent = document.querySelector("#parent");
const btn = document.createElement("button");
btn.textContent = "Klick mich";
parent.appendChild(btn);
Eigene Events erstellen und auslösen:
const event = new CustomEvent("myEvent", { detail: { message: "Hallo!" } });
document.dispatchEvent(event);
document.addEventListener("myEvent", e => {
console.log(e.detail.message); // Hallo!
});
Verwendung von classList und setAttribute:
const div = document.querySelector("#box");
div.classList.add("active");
div.setAttribute("data-id", 123);
document.querySelector("#parent").addEventListener("click", e => {
if(e.target.tagName === "BUTTON") alert("Button geklickt!");
});
Erstelle eine dynamische Liste:
Beispiel:
// HTML
// <ul id="list"></ul>
// <button id="add">Element hinzufügen</button>
const list = document.querySelector("#list");
const addBtn = document.querySelector("#add");
addBtn.addEventListener("click", () => {
const li = document.createElement("li");
li.innerHTML = `Element `;
list.appendChild(li);
});
// Event Delegation für Entfernen-Buttons
list.addEventListener("click", e => {
if(e.target.classList.contains("remove")) {
e.target.parentElement.remove();
}
});