Event Delegation

Use a single listener for dynamic child elements.

Code

JavaScript
document.getElementById("list").addEventListener("click", (e) => {
  const item = e.target.closest("[data-id]");
  if (!item) return;
  console.log("Clicked:", item.dataset.id);
});

// HTML: <ul id="list">
//   <li data-id="1">Item 1</li>
//   <li data-id="2">Item 2</li>
// </ul>

Line-by-line explanation

Expected output

Clicked: 1

Related snippets