Lesson 53/100

Tutorials JavaScript Tutorial

Event Delegation — Complete Guide

Event Delegation — Complete Guide: free step-by-step lesson with examples, common mistakes, and interview tips — part of JavaScript Tutorial on Toolliyo Academy.

On this page

JavaScript Tutorial · Lesson 53 of 100

Event Delegation

Basics ✓Objects & data ✓Async & DOM ✓AdvancedToolsProjects

Advanced · 4 — Production skills · ~10 min · JS HTML DOM & Web APIs

What is this?

Event delegation listens on a parent element for events that bubble up from children — one listener for many buttons.

Why should you care?

Dynamic lists (100 rows) should not attach 100 separate click handlers.

See it live — copy this example

Paste into an HTML file or the browser console (F12). Use Run below when the live editor is available.

<ul id="list">
  <li><button data-id="1">Delete</button></li>
  <li><button data-id="2">Delete</button></li>
</ul>
<script>
document.getElementById("list").addEventListener("click", (e) => {
  if (e.target.matches("button[data-id]")) {
    console.log("Delete", e.target.dataset.id);
  }
});
</script>

Run Example »

Edit the code below and click Run to see the result in Toolliyo’s live editor.

Code
Result

What happened?

  • Click bubbles from button to ul.
  • matches checks the target.
  • dataset reads data-id.

Practice next

  1. Click delete buttons and log data-id.
  2. Add new li dynamically — delegation still works.
  3. Try e.stopPropagation on inner clicks.
  4. Delegate mouseover on tbody to highlight entire tr.
  5. Ignore clicks on disabled buttons with matches("[data-id]:not([disabled])").

Remember

Listen on parent Check e.target Works for dynamic children

ScriptVerse task board

One listener on #board handles clicks for hundreds of draggable task cards added over time.

Outcome: Delegation keeps memory and setup cost flat as lists grow dynamically.

Interview prep for this lesson

Practice these questions aloud after reading—each links to a full structured answer.

Junior PDF Detailed
What is the event loop in JavaScript?
Short answer: The event loop manages asynchronous operations in JavaScript. It continuously checks the call stack and callback queue — executing queued tasks once the stack is empty. Example code console.log(&quot;A&quot…
Junior PDF Detailed
What is the difference between inline-block and block?
Short answer: block elements take full width and start on a new line. inline-block behaves like inline (stays in the same line) but allows setting width, height, margin, and padding. Example code .block { display: block;…
Mid PDF Detailed
Explain the difference between HTML4 and HTML5.
Short answer: HTML5 is the modern evolution of HTML4, introducing better structure, multimedia support, and APIs. Explain a bit more Follow me on LinkedIn: HTML4 mainly focused on document markup, while HTML5 focuses on…
Mid PDF Detailed
Class selector: Targets elements with a class.?
Short answer: .highlight { background: yellow; } .highlight { background: yellow; } .highlight { background: yellow; } .highlight { background: yellow; } .highlight { background: yellow; } .highlight { background: yellow…
Mid PDF Detailed
How does the browser parse and render HTML?
Short answer: When a browser loads a webpage, it goes through these main steps: Real-world example (ShopNest) ShopNest’s browser cart uses modern JavaScript: fetch APIs with async/await, modules, and clear error handling…
Questions on this lesson 0

Sign in to ask a question or upvote helpful answers.

No questions yet — be the first to ask!

JavaScript Tutorial
Course syllabus

JavaScript Tutorial

Tutorial — Basics
Control Flow & Functions
Objects & Collections
Strings, Dates & RegEx
Async JavaScript
HTML DOM & Web APIs
Advanced
Performance & Security
Testing & Tooling
Projects
Toolliyo Assistant
Ask about tutorials, ebooks, training, pricing, mentor services, and support. I use public site content only—not admin or internal tools.

care@toolliyo.com

Need callback? Share your details