event.isPropagationStopped() returns whether event.stopPropagation() was called on this event. This tutorial covers the official button demo, stopping bubble to parent handlers, comparing with stopImmediatePropagation() and isImmediatePropagationStopped(), and coordinating multiple listeners.
01
Method
isPropagationStopped()
02
Returns
Boolean
03
Official
not called → called
04
stopPropagation
Sets flag
05
Bubbling
Parent handlers
06
Since 1.3
No arguments
Fundamentals
Introduction
When a click or other event bubbles from a child element up through parent elements, each ancestor with a bound handler may run. Sometimes a handler on the child must stop that bubble — so a parent’s delegated handler never fires.
Calling event.stopPropagation() halts bubbling. To check whether it already happened — in the same handler or a helper — call event.isPropagationStopped(). jQuery has exposed this check since version 1.3 on its normalized event object (aligned with the W3C DOM Level 3 specification).
Concept
Understanding event.isPropagationStopped()
This method answers one question: was event bubbling stopped on this event?
Before stopPropagation — event.isPropagationStopped() returns false.
After stopPropagation — returns true for the rest of that dispatch.
Read-only — takes no arguments; does not change state.
Parent handlers — once true, ancestors will not receive this dispatch (unless they use capture phase).
💡
Beginner Tip
stopPropagation() stops bubbling up the DOM — parent handlers are skipped. Other handlers on the same element can still run. Use isPropagationStopped() to check whether bubbling was already halted.
Foundation
📝 Syntax
Official jQuery API form (since 1.3):
jQuery
event.isPropagationStopped()
// typical pattern:
$( "button" ).on( "click", function ( event ) {
if ( !event.isPropagationStopped() ) {
// propagation not stopped yet
}
event.stopPropagation();
if ( event.isPropagationStopped() ) {
// now true
}
});
Parameters
None — this method does not accept any arguments.
Return value
Boolean — true if event.stopPropagation() was called on this event object; otherwise false.
Official jQuery demo — helper logs whether stopPropagation() was called before and after invoking it in one click handler (same pattern as the jQuery API docs).
stopPropagation() sets an internal flag on the event object. isPropagationStopped() reads that flag — the official demo proves the transition within one handler.
Example 2 — Stop bubbling: parent handler never runs
Click a button inside a nested box — the inner handler calls stopPropagation(), so the outer box click handler does not run.
Second handler — propagation stopped? true
(Same-element handler still runs; parent bubbling is stopped)
How It Works
return false is jQuery sugar for preventDefault() plus stopPropagation(). Prefer explicit calls in new code; know that isPropagationStopped() reflects the propagation part.
Applications
🚀 Common Use Cases
Debug bubbling — log isPropagationStopped() after child handlers run.
Nested widgets — inner control stops bubble so outer panel click handler does not fire.
Plugin stacks — check the flag before running parent-level analytics.
Testing — assert the flag after simulating clicks in Try-it labs.
🧠 How isPropagationStopped() Works
1
Event fires
User clicks — event may bubble from target to ancestors; propagation flag starts false.
Start
2
Early handlers
isPropagationStopped() returns false until something calls stopPropagation().
Check
3
stopPropagation()
Handler sets the flag — parent elements will not receive this dispatch.
Stop
4
✓
Flag stays true
Later handlers on the same element or helpers read isPropagationStopped() === true.
Important
📝 Notes
Available since jQuery 1.3 — returns a Boolean.
Takes no arguments — read-only query method.
Reports whether stopPropagation() (or stopImmediatePropagation()) halted bubbling on this event object.
Does not report handler-queue state alone — use isImmediatePropagationStopped() for same-element skips.
stopImmediatePropagation() also sets isPropagationStopped() to true.
Introduced in DOM Level 3; jQuery normalizes it across supported browsers.
Compatibility
Browser Support
event.isPropagationStopped() is part of jQuery’s normalized event object since jQuery 1.3+. It mirrors the native propagation-stopped flag across browsers jQuery supports, as described in the W3C DOM Level 3 Events specification.
✓ jQuery 1.3+ · all browsers
jQuery event.isPropagationStopped()
Check whether event bubbling was stopped.
100%Universal
Google ChromeAll versions · Desktop & Mobile
Full support
Mozilla FirefoxAll versions · Desktop & Mobile
Full support
Apple SafariAll versions · macOS & iOS
Full support
Microsoft EdgeAll versions · Chromium & Legacy
Full support
Internet ExplorerIE 6+ · Legacy environments
Full support
OperaAll modern versions
Full support
isPropagationStopped()Boolean
Bottom line: Call stopPropagation() to halt bubbling — call isPropagationStopped() to verify.
Wrap Up
Conclusion
event.isPropagationStopped() tells you whether event bubbling was halted on the current dispatch. The official demo shows it flip from “not called” to “called” immediately after stopPropagation().
Use it when child handlers, helpers, or stacked plugins must respect an earlier bubble stop — especially with nested UI, delegation, and return false.
Call event.stopPropagation() explicitly when you must stop bubbling to parents
Check isPropagationStopped() in shared helpers
Use stopPropagation on inner elements to isolate clicks from parent handlers
Log the flag while debugging multi-handler bugs
Pair with stopPropagation() — one stops bubble, one verifies
❌ Don’t
Call isPropagationStopped() expecting to reset the flag
Confuse with isImmediatePropagationStopped() or isDefaultPrevented()
Use stopPropagation when you only need to block parents — not stopImmediatePropagation
Use stopImmediatePropagation when you must skip same-element handlers too
Bind parent handlers knowing child stopPropagation() may block them
Summary
Key Takeaways
Knowledge Unlocked
Five things to remember about isPropagationStopped()
Read whether event bubbling was halted.
5
Core concepts
?01
isPropagationStopped
Boolean check
API
stop02
stopPropagation
Sets true
Pair
demo03
Official
not called → called
Demo
queue04
Bubbling
Parent handlers
Use
vs05
stopImmediate
Also sets flag
Compare
❓ Frequently Asked Questions
event.isPropagationStopped() returns true if event.stopPropagation() was called on this event object at any point during handler execution, and false otherwise. It is a read-only check with no arguments. Available since jQuery 1.3.
Use it when a handler or helper needs to know whether bubbling was halted — for example, skipping parent-level analytics when a child handler already called stopPropagation(), or logging state inside multi-step handler logic.
stopPropagation() prevents the event from reaching parent elements but other handlers on the same element can still run. stopPropagation() also skips remaining handlers on the same element. Both set isPropagationStopped() to true; only stopPropagation sets isPropagationStopped().
No. isPropagationStopped() reports whether stopPropagation() (or stopPropagation()) halted bubbling. isPropagationStopped() reports only whether stopPropagation() was called to skip remaining same-element handlers.
No. isPropagationStopped() only reports state — it does not reset the flag. Once stopPropagation() runs, parent elements will not receive this dispatch.
Yes. In jQuery handlers, return false calls both preventDefault() and stopPropagation(). After return false is processed, isPropagationStopped() returns true, but isPropagationStopped() remains false unless you also call stopPropagation().
Did you know?
jQuery added isPropagationStopped() alongside isImmediatePropagationStopped() and isDefaultPrevented() in version 1.3 — giving handlers three read-only checks for the three main event flags. This method is described in the W3C DOM Level 3 Events specification.