An event propagates or bubbles till the window object-level every time a registered event is called. For example, Let us consider a parent div element (“Div Parent”) that contains another child div element (“Div child”), and for both, a click event is registered. If child div is clicked, the event will be fired at all places i.e, at both parent and child objects.
StopPropagation() event method: Prevents propagation of any handlers at top-level DOM hierarchy to execute. It stops the click event from bubbling to the parent elements.
Example: In this method, after clicking the <div> element 1st event handler will occur after that nothing will happen. If you click the <p> element then the 2nd and 1st event handler will occur because <p> element is inside of <div> element but if you click <span> element only the 3rd event handler will occur, cause StopPropagation() event method stops the event from bubbling to the parent elements.
HTML
<!DOCTYPE html><html><head> <script src= </script> <script> $(document).ready(function() { $("span").click(function(event) { event.stopPropagation(); alert("The span element was clicked."); }); $("p").click(function(event) { alert("The p element was clicked."); }); $("div").click(function() { alert("The div element was clicked."); }); }); </script> <style> div { height: 120px; width: 300px; padding: 10px; margin: 50px; border: 2px solid black; background-color: purple; } p { background-color: orange; } span { background-color: cyan; } </style></head><body> <center> <div> <h1 style="color:lightgreen;"> GeeskforGeeks </h1> <p> Acomputer Science Portal for Geeks<br> <span>Click on this span element.</span> </p> </div> <p> event.stopPropagation() stops the click event from bubbling to the parent elements. </p> </center></body></html> |
Output:
- Before Clicking the element:
- After Clicking the <div> element:
- After Clicking the <p> element:
- After Clicking the <span> element:
StopImmediatePropagation() event method: Prevents both propagation of any other handlers and those at top level DOM hierarchy. It stops the other events which were assigned after this event.
Example: The StopImmediatePropagation() event stops the next event.
HTML
<!DOCTYPE html><html><head> <script src= </script> <script> $(document).ready(function() { $("div").click(function(event) { alert("'Event handler 1' executed"); event.stopImmediatePropagation(); }); $("div").click(function(event) { alert("'Event handler 2' executed"); }); $("div").click(function(event) { alert("'Event handler 3' executed"); }); }); </script> <style> div { height: 100px; width: 300px; padding: 10px; margin: 50px; border: 2px solid black; background-color: purple; } </style></head><body> <center> <div> <h1 style="color:lightgreen;"> GeeskforGeeks </h1> Click on this div element. </div> <p> event.stopImmediatePropagation() stop the second and third event. </p> </center></body></html> |
Output:
- Before Clicking the div element:
- After clicking the div element:
stopPropagation vs stopImmediatePropagation
| stopPropagation | stopImmediatePropagation |
|---|---|
| It will allow other handlers on the same element to be executed, prevent handlers on parent elements from running. | It will prevents every event from running. |
| It will allow more than one handler to be executed one by one. | It will depend on you where you used this, that handler will be the last one to be executed. |
| If you create a table containing <table>, <tr> and <td>. If you set three event handler for <td> then other two event handler will also run with this one. | But in this case if you do the same things the other two event handlers won’t run. |

