jQuery event.isPropagationStopped()

Beginner
5 min read
Updated: Oct 2026
5 examples
Live preview

What Is event.isPropagationStopped()?

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
NeedUse
Stop bubblingevent.stopPropagation()
Check if stoppedevent.isPropagationStopped()
Halt same-element queueevent.stopImmediatePropagation()
Check immediate haltevent.isImmediatePropagationStopped()
Bind handlers.on("click", fn)

How to Use isPropagationStopped()

Call it on the event object before or after stopPropagation().

  1. Bind handlers on a child (and optionally a parent) with .on().
  2. In a handler (or helper), call event.isPropagationStopped().
  3. Call event.stopPropagation() when parents must not receive the event.
  4. Call the check again — now true (“called” in the official demo).
  5. Remember: other handlers on the same element can still run.
PieceRequired?Role
eventYesjQuery event object in the handler
stopPropagation()To stop bubbleSets the flag this method reads
isPropagationStopped()—Returns true / false
ArgumentsNoneMethod 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

Cheat Sheet

Keep these facts handy while debugging bubbling.

TopicDetail
ReturnsBoolean
SincejQuery 1.3
ArgumentsNone
Official demonot called → stop → called
Same-element handlersStill run after stopPropagation()
return falseSets this flag (jQuery)
SpecW3C DOM Level 3
Official docsapi.jquery.com/…

Live Preview

Click the button. See not called then called — same idea as the official jQuery API demo.

Demo

Checks the flag, calls stopPropagation(), checks again.

Log
Waiting — click the button.

jQuery Examples

Short, copy-ready snippets. Open DevTools, or use Try It Yourself for a live editor.

Example 1 — Official: Not Called, Then Called

Log the flag before and after stopPropagation().

jQuery
function propStopped(event) {
  var msg = event.isPropagationStopped()
    ? "called"
    : "not called";
  $("#out").append(msg + "\\n");
}

$("button").on("click", function (event) {
  $("#out").text("");
  propStopped(event);
  event.stopPropagation();
  propStopped(event);
});
Try It Yourself

How It Works

  1. Helper. Reads the flag and appends called / not called.
  2. Before. Nothing stopped yet → not called.
  3. Stop. stopPropagation() sets the flag.
  4. 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
});
Try It Yourself

How It Works

  1. Child. Calls stopPropagation().
  2. Flag. isPropagationStopped() is true.
  3. Bubble. The event does not reach #parent.
  4. Result. Only the child message appears.

Example 3 — Same-Element Handler B Still Runs

Bubbling stops; other handlers on the same button continue.

jQuery
$("#btn").on("click", function (event) {
  event.stopPropagation();
  $("#out").text(
    "A: propagation? " + event.isPropagationStopped() + "\\n"
  );
});

$("#btn").on("click", function () {
  $("#out").append("Handler B still ran.");
});
Try It Yourself

How It Works

  1. A stops bubble. Parents are blocked.
  2. Flag. Propagation check is true.
  3. B runs. Same-element handlers are not skipped.
  4. Need to skip B? Use stopImmediatePropagation() instead.

Example 4 — vs stopImmediatePropagation()

Compare both flags when you halt the full same-element queue.

jQuery
$("#btn").on("click", function (event) {
  event.stopImmediatePropagation();
  $("#out").text(
    "propagation? " + event.isPropagationStopped() + "\\n" +
    "immediate? " + event.isImmediatePropagationStopped() + "\\n"
  );
});

$("#btn").on("click", function () {
  $("#out").append("Handler B ran."); // skipped
});
Try It Yourself

How It Works

  1. Immediate stop. Skips B and stops bubbling.
  2. Both flags. Propagation and immediate are true.
  3. B skipped. No second-handler line.
  4. Rule. Immediate implies propagation stopped.

Example 5 — return false Sets the Flag

In jQuery, return false includes stopPropagation().

jQuery
$("#btn").on("click", function () {
  return false; // preventDefault + stopPropagation
});

$("#btn").on("click", function (event) {
  $("#out").text(
    "propagation? " + event.isPropagationStopped() + "\\n" +
    "immediate? " + event.isImmediatePropagationStopped()
  );
});
Try It Yourself

How It Works

  1. First handler. return false stops bubbling (and prevents default).
  2. Second handler. Still runs on the same element.
  3. Propagation. Flag is true.
  4. 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.

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 Chrome All versions · Desktop & Mobile
Full support
Mozilla Firefox All versions · Desktop & Mobile
Full support
Apple Safari All versions · macOS & iOS
Full support
Microsoft Edge All versions · Chromium & Legacy
Full support
Internet Explorer IE 6+ · Legacy environments
Full support
Opera All modern versions
Full support
isPropagationStopped jQuery 1.3+

Bottom line: Safe for production. Call stopPropagation() to block parents; call isPropagationStopped() to ask whether it already happened.

Performance Notes

ApproachCostBest for
isPropagationStopped()FreeReading a boolean flag
stopPropagation()CheapSkipping expensive parent handlers
Deep DOM + many parentsCan add upStop early when the child handled it

The check itself is free. The win is avoiding parent handlers you no longer need for that click.

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().

Next: event.metaKey

Detect Command (Mac) or Windows key during mouse/keyboard events.

event.metaKey tutorial →

About the author

Mari Selvan M P
Mari Selvan M P 🔗

Developer, cloud engineer, and technical writer

  • Experience 12 years building web and cloud systems
  • Focus Full Stack Development, AWS, and Developer Education

I write practical tutorials so students and working developers can learn by doing—from databases and APIs to deployment on AWS.

9 people found this page helpful