Event Delegation
Event Delegation: free step-by-step lesson with examples, common mistakes, and interview tips — part of jQuery Tutorial on Toolliyo Academy.
On this page
jQuery Tutorial · Lesson 29 of 100
Event Delegation
Setup & DOM ✓ → Events Effects AJAX → Perf & Integrate → Ship & Projects
Events Effects AJAX · 2 — Interact · ~6 min · Events
What is this?
Delegate with $(parent).on("click", "childSelector", handler) so dynamically added children still fire.
Why should you care?
QueryVerse tables append rows after AJAX — direct binds miss new rows.
See it live — copy this example
Examples include the jQuery 3.7 CDN. Paste into an HTML file or use Run Example to preview.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>QueryVerse</title>
<style>
body { font-family: system-ui, sans-serif; margin: 1.25rem; }
.box { padding: .75rem; border: 1px solid #ccc; border-radius: 8px; margin: .5rem 0; }
.muted { color: #666; }
button { margin-right: .35rem; margin-top: .35rem; }
</style>
</head>
<body>
<ul id="todos" class="box">
<li><button class="del">x</button> Task A</li>
</ul>
<button id="add">Add task</button>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script>
$(function () {
let n = 1;
$('#todos').on('click', '.del', function () {
$(this).closest('li').remove();
});
$('#add').on('click', function () {
n += 1;
$('#todos').append('<li><button class="del">x</button> Task ' + n + '</li>');
});
});
</script>
</body>
</html>
Run Example »
Edit the code below and click Run to see the result in Toolliyo’s live editor.
What happened?
- Listener lives on a stable parent.
- Filter matches the clicked descendant.
- this is the matched child.
Practice next
- Add tasks then delete them.
- Bind .del directly instead and see new rows fail.
- Use closest to find the li.
- Delegate change on inputs inside the list.
- Add a data-id on each li.
Remember
Delegate for dynamic lists. Stable parent + child selector. Test after AJAX appends.
Delete row
AJAX adds table rows.
Outcome: Delete works on new rows too.
Interview prep for this lesson
Practice these questions aloud after reading—each links to a full structured answer.
Sign in to ask a question or upvote helpful answers.
No questions yet — be the first to ask!