- The Frontend Feed
- Posts
- Event Bubbling, Capturing, and Delegation in JavaScript: Quick Interview Guide
Event Bubbling, Capturing, and Delegation in JavaScript: Quick Interview Guide
JavaScript events are at the core of web interactions. Understanding how they propagate through the DOM is key to effective event handling, especially in interviews. Here’s a quick rundown of the essentials:
Event Bubbling, Capturing, and Delegation in JavaScript: Quick Interview Guide
Event Bubbling:
Definition: Event bubbling occurs when an event starts at the target element and bubbles up to its parent elements.
Key Point: Use event.stopPropagation()
to prevent the event from reaching parent elements.
Event Capturing:
Definition: Event capturing is the opposite of bubbling, where the event starts from the root and trickles down to the target element.
Key Point: Use event.stopPropagation()
to stop event capturing.
Event Delegation:
Definition: Event delegation allows you to handle events for multiple child elements using a single parent listener.
Key Point: Improves performance by reducing the number of event listeners.
Example:
<div id="parent" style="padding: 20px; border: 2px solid blue;">
Parent Div
<button id="child" style="margin-top: 10px;">Click Me</button>
</div>
// Capturing Phase
document.querySelector('#parent').addEventListener('click', (event) => {
console.log('Parent Div - Capturing Phase');
}, true); // Use true to enable capturing phase
// Target Phase
document.querySelector('#child').addEventListener('click', (event) => {
console.log('Button - Target Phase');
});
// Bubbling Phase
document.querySelector('#parent').addEventListener('click', (event) => {
console.log('Parent Div - Bubbling Phase');
});
// Stop Propagation Example
document.querySelector('#child').addEventListener('click', (event) => {
event.stopPropagation(); // Stops event from bubbling up
console.log('Button - Bubbling Stopped');
});
Explanation:
• Capturing Phase: The #parent element listens for the click event during the capturing phase (using true as the third argument in addEventListener).
• Target Phase: The #child button is the target of the event, and its event listener executes when the event reaches it.
• Bubbling Phase: The #parent element also listens for the click event during the bubbling phase.
• Stopping Propagation: The event.stopPropagation() in the target phase prevents the event from bubbling up to the parent during the bubbling phase.
Expected Console Output When Clicking the Button:
1. Parent Div - Capturing Phase
2. Button - Target Phase
3. Button - Bubbling Stopped
For a deeper dive into these concepts, including event phases and how to use event.eventPhase, check out the comprehensive guide here.
🚀 If you enjoyed this post, why not show your love for coding with our Javascript Developer Themed Tees from Usha Creations? Discover the perfect shirt for your next hackathon!
Reply