How can I stop event bubbling in JavaScript
How can I stop event bubbling in JavaScript
To stop event bubbling in JavaScript, you can use the stopPropagation() method provided by
the Event object. This prevents the event from propagating to parent elements in the DOM
hierarchy.
Using stopPropagation()
The stopPropagation() method halts the event from bubbling up to its parent elements. This
ensures that only the target element's event listener is executed.
Example:
<div>
Grandparent
<div>
Parent
<div>
Child
</div>
</div>
</div>
<script>
document.getElementById('grandparent').addEventListener('click', () => {
console.log('Grandparent clicked!');
});
document.getElementById('parent').addEventListener('click', () => {
console.log('Parent clicked!');
});
<div>
<button id="closeButton">Close</button>
</div>
<script>
document.getElementById('modal').addEventListener('click', () => {
console.log('Modal clicked!');
});
<form id="myForm">
<button id="submitButton">Submit</button>
</form>
<script>
document.getElementById('myForm').addEventListener('click', () => {
console.log('Form clicked!');
});
document.getElementById('submitButton').addEventListener('click', (event) => {
console.log('Submit button clicked!');
event.stopPropagation(); // Prevents form click from firing
});
</script>
Example:
<script>
document.getElementById('link').addEventListener('click', (event) => {
console.log('Link clicked, but no navigation!');
event.preventDefault(); // Prevent default navigation
event.stopPropagation(); // Stop bubbling
});
</script>
Summary Table
Method Purpose
Both Combined Stops propagation and prevents default behavior for full control.
Using stopPropagation() effectively allows you to manage event flow and avoid unintended side
effects in your web applications!
⁂