Event Bubbling and Capturing
Event Bubbling and Capturing
Event Capturing
<!DOCTYPE html>
<html>
<body>
<div id="outer">
Outer
<div id="inner">
Inner
</div>
</div>
<script>
document.getElementById('outer').addEventListener('click', (event) => {
console.log('Outer Div Capturing');
}, true);
document.getElementById('inner').addEventListener('click', (event) => {
console.log('Inner Div Capturing');
}, true);
</script>
</body>
</html>
Output:
Outer Div Capturing
Inner Div Capturing
Event Bubbling
<!DOCTYPE html>
<html>
<body>
<div id="outer">
Outer
<div id="inner">
Inner
</div>
</div>
<script>
document.getElementById('outer').addEventListener('click', (event) => {
console.log('Outer Div Bubbling');
});
document.getElementById('inner').addEventListener('click', (event) => {
console.log('Inner Div Bubbling');
});
</script>
</body>
</html>
Output:
Stopping Propagation
Sometimes, you might want to stop the event from
propagating further. JavaScript provides two methods for
this purpose: stopPropagation and stopImmediatePropagation.
<!DOCTYPE html>
<html>
<body>
<div id="outer">
Outer
<div id="inner">
Inner
</div>
</div>
<script>
document.getElementById('outer').addEventListener('click', (event) => {
console.log('Outer Div');
});
document.getElementById('inner').addEventListener('click', (event) => {
console.log('Inner Div');
event.stopPropagation();
});
</script>
</body>
</html>
Output:
Inner Div
Event Delegation
Event delegation is a technique that leverages event
bubbling to handle events more efficiently. Instead of
attaching event listeners to multiple child elements, you
can attach a single event listener to a common parent
element and manage events through it.
<!DOCTYPE html>
<html>
<body>
<ul id="list">
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
<script>
document.getElementById('list').addEventListener('click', (event) => {
if (event.target.tagName === 'LI') {
console.log('Clicked:', event.target.textContent);
}
});
</script>
</body>
</html>
Output:
Clicked: Item 1
Clicked: Item 2
Clicked: Item 3
Conclusion
Happy coding!