Returns a Boolean: true if event.stopPropagation() was called on this event, otherwise false. Added in jQuery 1.3. Takes no arguments. Described in W3C DOM Level 3.
Remember
event.isPropagationStopped() // Boolean — no args
// Official idea
$("button").on("click", function (event) {
event.isPropagationStopped(); // false → "not called"
event.stopPropagation();
event.isPropagationStopped(); // true → "called"
});
// stopPropagation = parents do not run; same-element handlers still can
// stopImmediatePropagation = also skips remaining same-element handlers
Call it on the event object before or after stopPropagation().
Bind handlers on a child (and optionally a parent) with .on().
In a handler (or helper), call event.isPropagationStopped().
Call event.stopPropagation() when parents must not receive the event.
Call the check again — now true (“called” in the official demo).
Remember: other handlers on the same element can still run.
Piece
Required?
Role
event
Yes
jQuery event object in the handler
stopPropagation()
To stop bubble
Sets the flag this method reads
isPropagationStopped()
—
Returns true / false
Arguments
None
Method takes no parameters
Pseudocode
Pseudocode
child.on("click", handlerA)
child.on("click", handlerB)
parent.on("click", parentHandler)
when click on child:
call handlerA(event):
isPropagationStopped() → false
stopPropagation()
isPropagationStopped() → true
call handlerB(event) // still runs (same element)
// parentHandler is NOT called
// With stopImmediatePropagation() instead:
handlerB is skipped too
isPropagationStopped() → true
isImmediatePropagationStopped() → true
Helper. Reads the flag and appends called / not called.
Before. Nothing stopped yet → not called.
Stop.stopPropagation() sets the flag.
After. Same check → called.
Example 2 — Parent Does Not Receive the Bubble
Stop on the child; the parent handler never runs.
jQuery
$("#child").on("click", function (event) {
event.stopPropagation();
$("#out").text(
"child stopped. propagation? " +
event.isPropagationStopped()
);
});
$("#parent").on("click", function () {
$("#out").append("\\nparent ran"); // does not run
});
First handler.return false stops bubbling (and prevents default).
Second handler. Still runs on the same element.
Propagation. Flag is true.
Immediate. Stays false — queue was not fully halted.
Edge Cases & Pitfalls
Watch for these when using isPropagationStopped().
read-only
Cannot undo the stop
Once stopPropagation() runs, parents will not receive this dispatch.
same element
Does not skip same-element handlers
Handler B on the same node still runs. Use stopImmediatePropagation() to skip it.
immediate
Immediate stop also sets this flag
stopImmediatePropagation() implies bubbling stopped — both checks can be true.
return false
return false sets it
In jQuery, return false includes stopPropagation(), so this check becomes true.
Compatibility
Browser Support
event.isPropagationStopped() is a jQuery event-object method available since 1.3. It matches the W3C DOM Level 3 idea of checking whether propagation was stopped. Works wherever your loaded jQuery version runs.
✓ Stable · jQuery 1.3+
isPropagationStopped()
Supported in jQuery 1.3–3.x. Prefer jQuery 3.x with .on() handlers. Pair with stopPropagation() to block parents while allowing same-element handlers.
100%With jQuery 1.3+
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
isPropagationStoppedjQuery 1.3+
Bottom line: Safe for production. Call stopPropagation() to block parents; call isPropagationStopped() to ask whether it already happened.
Analysis
Performance Notes
Approach
Cost
Best for
isPropagationStopped()
Free
Reading a boolean flag
stopPropagation()
Cheap
Skipping expensive parent handlers
Deep DOM + many parents
Can add up
Stop early when the child handled it
The check itself is free. The win is avoiding parent handlers you no longer need for that click.
Remember
Key Takeaways
Role: ask whether stopPropagation() already ran.
Official:not called → stop → called.
Effect: parents blocked; same-element handlers can still run.
Stronger halt:stopImmediatePropagation() also skips handler B.
One line:isPropagationStopped() answers “did someone already block bubbling to parents?”
Frequently Asked Questions
It returns true if event.stopPropagation() was called on this event object, and false otherwise. It takes no arguments. Available since jQuery 1.3. Described in the W3C DOM Level 3 specification.
When a handler or helper needs to know whether bubbling was halted — for example, skipping parent-level work when a child already called stopPropagation().
stopPropagation() stops the event from reaching parents, but other handlers on the same element still run. stopImmediatePropagation() also skips remaining same-element handlers.
Yes. stopImmediatePropagation() implies stopPropagation(), so isPropagationStopped() becomes true. isImmediatePropagationStopped() is true only for the immediate stop.
No. isPropagationStopped() only reports state. Once stopPropagation() runs, parents will not receive this dispatch.
Yes. In jQuery handlers, return false calls preventDefault() and stopPropagation(). After that, isPropagationStopped() returns true, but isImmediatePropagationStopped() stays false unless you call stopImmediatePropagation().