jQuery event.isImmediatePropagationStopped()

Beginner
⏱️ 9 min read
📚 Updated: Jul 2026
🎯 5 Examples
🚀 5 Try-it labs
Event object · jQuery 1.3+

What You’ll Learn

event.isImmediatePropagationStopped() returns whether event.stopImmediatePropagation() was called on this event. This tutorial covers the official button demo, blocking remaining handlers on the same element, comparing with stopPropagation() and isPropagationStopped(), and coordinating multiple listeners.

01

Method

isImmediatePropagationStopped()

02

Returns

Boolean

03

Official

not called → called

04

stopImmediate

Sets flag

05

Handlers

Same element

06

Since 1.3

No arguments

Introduction

When you bind multiple handlers to the same element with .on(), jQuery runs them in registration order during one event dispatch. Sometimes an early handler must stop the rest — not just parent bubbling, but every remaining listener on that element.

Calling event.stopImmediatePropagation() does that. To check whether it already happened — in the same handler or a helper — call event.isImmediatePropagationStopped(). jQuery has exposed this since version 1.3 on its normalized event object.

Understanding event.isImmediatePropagationStopped()

This method answers one question: was immediate propagation stopped on this event?

  • Before stopImmediatePropagationevent.isImmediatePropagationStopped() returns false.
  • After stopImmediatePropagation — returns true for the rest of that dispatch.
  • Read-only — takes no arguments; does not change state.
  • Same element only — remaining handlers on the bound element are skipped; parent handlers may still run unless propagation was also stopped.
💡
Beginner Tip

stopPropagation() stops bubbling up the DOM. stopImmediatePropagation() stops bubbling and skips other handlers on the same element. Use isImmediatePropagationStopped() to check whether that stronger stop already ran.

📝 Syntax

Official jQuery API form (since 1.3):

jQuery
event.isImmediatePropagationStopped()



// typical pattern:
$( "button" ).on( "click", function ( event ) {
  if ( !event.isImmediatePropagationStopped() ) {
    // immediate stop not called yet
  }
  event.stopImmediatePropagation();
  if ( event.isImmediatePropagationStopped() ) {
    // now true
  }
});

Parameters

  • None — this method does not accept any arguments.

Return value

  • Booleantrue if event.stopImmediatePropagation() was called on this event object; otherwise false.

Official jQuery API example

jQuery
function immediatePropStopped( event ) {
  var msg = event.isImmediatePropagationStopped() ? "called" : "not called";
  $( "#stop-log" ).append( "<div>" + msg + "</div>" );
}



$( "button" ).on( "click", function ( event ) {
  immediatePropStopped( event );
  event.stopImmediatePropagation();
  immediatePropStopped( event );
});

⚡ Quick Reference

ActionAPIAfter call
Stop remaining handlersevent.stopImmediatePropagation()isImmediatePropagationStopped() === true
Check if stoppedevent.isImmediatePropagationStopped()Boolean
Stop bubbling onlyevent.stopPropagation()Use isPropagationStopped()
Cancel default actionevent.preventDefault()Use isDefaultPrevented()
jQuery return falsereturn falseprevent + stopPropagation (not immediate)

📋 stopImmediatePropagation() vs stopPropagation() vs checks

Three related tools — two stop propagation at different levels, two read-only checks report which stop ran.

stopImmediatePropagation
event.stopImmediatePropagation()

Skip remaining handlers + stop bubbling

isImmediatePropagationStopped
event.isImmediatePropagationStopped()

Read immediate-stop flag

stopPropagation
event.stopPropagation()

Stop bubbling; same-element handlers may continue

isPropagationStopped
event.isPropagationStopped()

Read bubbling-stop flag

Examples Gallery

Example 1 follows the official jQuery demo. Examples 2–5 cover handler queues, comparing stop methods, guard helpers, and plugin cooperation.

📚 Official jQuery Demo

Log “not called”, call stopImmediatePropagation, log “called”.

Example 1 — Official Demo: not called then called

Official jQuery demo — helper logs whether stopImmediatePropagation() was called before and after invoking it in one click handler.

jQuery
function immediatePropStopped( event ) {
  var msg = event.isImmediatePropagationStopped() ? "called" : "not called";
  $( "#stop-log" ).append( "<div>" + msg + "</div>" );
}



$( "button" ).on( "click", function ( event ) {
  immediatePropStopped( event );
  event.stopImmediatePropagation();
  immediatePropStopped( event );
});
Try It Yourself

How It Works

stopImmediatePropagation() sets an internal flag on the event object. isImmediatePropagationStopped() reads that flag — the official demo proves the transition within one handler.

Example 2 — Handler queue: third handler never runs

Three click handlers on one button — the second calls stopImmediatePropagation(), so the third is skipped.

jQuery
$( "#btn" ).on( "click", function () {
  $( "#log" ).append( "<div>Handler 1 ran</div>" );
});



$( "#btn" ).on( "click", function ( event ) {
  $( "#log" ).append( "<div>Handler 2 ran — stopping immediate</div>" );
  event.stopImmediatePropagation();
});



$( "#btn" ).on( "click", function () {
  $( "#log" ).append( "<div>Handler 3 ran</div>" );
});
Try It Yourself

How It Works

jQuery invokes same-element handlers in bind order. After handler 2 stops immediate propagation, handler 3 is not called for this click.

📈 Practical Patterns

Compare stop methods, guard helpers, and multi-plugin pages.

Example 3 — stopPropagation vs stopImmediatePropagation

stopPropagation() alone does not set the immediate flag — later handlers on the same element still run.

jQuery
$( "#btn" ).on( "click", function ( event ) {
  event.stopPropagation();
  $( "#log" ).append(
    "immediate stopped? " + event.isImmediatePropagationStopped() + "\\n" +
    "propagation stopped? " + event.isPropagationStopped()
  );
});



$( "#btn" ).on( "click", function () {
  $( "#log" ).append( "Second handler still ran" );
});
Try It Yourself

How It Works

Use isImmediatePropagationStopped() when you care about the handler queue. Use isPropagationStopped() when you care about bubbling to parents.

Example 4 — Guard helper: skip work if already stopped

Shared helper returns early once stopImmediatePropagation() was called — call it before and after the stop in one handler.

jQuery
function trackClick( event, label ) {
  if ( event.isImmediatePropagationStopped() ) {
    return "skipped (immediate already stopped)";
  }
  return "tracked: " + label;
}



$( "#btn" ).on( "click", function ( event ) {
  $( "#log" ).append( "<div>" + trackClick( event, "before stop" ) + "</div>" );
  event.stopImmediatePropagation();
  $( "#log" ).append( "<div>" + trackClick( event, "after stop" ) + "</div>" );
});
Try It Yourself

How It Works

Call the helper before and after stopImmediatePropagation() in the same handler — the second call sees the flag and returns the skip message.

Example 5 — Plugin cooperation: primary handler owns the click

A validation plugin stops immediate propagation on invalid input; a tooltip plugin checks the flag before showing UI.

jQuery
// "Validation plugin" — runs first (bound first)
$( "#save" ).on( "click", function ( event ) {
  if ( !$( "#name" ).val() ) {
    event.stopImmediatePropagation();
    $( "#msg" ).text( "Validation failed — immediate stopped: " +
      event.isImmediatePropagationStopped() );
  }
});



// "Save plugin" — runs second only if validation passed
$( "#save" ).on( "click", function ( event ) {
  if ( event.isImmediatePropagationStopped() ) return;
  $( "#msg" ).text( "Save handler ran — form would submit." );
});
Try It Yourself

How It Works

When bind order is controlled, validation can halt the handler queue; downstream handlers read isImmediatePropagationStopped() or simply never run if they are registered after the stop.

🚀 Common Use Cases

  • Debug handler order — log isImmediatePropagationStopped() after each handler runs.
  • Validation gates — invalid state stops immediate propagation before save handlers.
  • Analytics helpers — skip tracking when a primary handler already stopped the queue.
  • Plugin stacks — third-party scripts check the flag before adding behavior.
  • One-shot buttons — first click stops remaining toggle handlers on the same element.
  • Testing — assert the flag after simulating clicks in Try-it labs.

🧠 How isImmediatePropagationStopped() Works

1

Event fires

User clicks — jQuery runs handlers on the element in registration order; immediate flag starts false.

Start
2

Early handlers

isImmediatePropagationStopped() returns false until something calls stopImmediatePropagation().

Check
3

stopImmediatePropagation()

Handler sets the flag — remaining listeners on the same element are skipped for this dispatch.

Stop
4

Flag stays true

Later code in the same handler or helpers read isImmediatePropagationStopped() === true.

📝 Notes

  • Available since jQuery 1.3 — returns a Boolean.
  • Takes no arguments — read-only query method.
  • Reports whether stopImmediatePropagation() was ever called on this event object.
  • Does not report default-prevented state — use isDefaultPrevented() for that.
  • stopImmediatePropagation() also stops bubbling (like stopPropagation()).
  • Introduced in DOM Level 3; jQuery normalizes it across supported browsers.

Browser Support

event.isImmediatePropagationStopped() is part of jQuery’s normalized event object since jQuery 1.3+. It mirrors the native immediate-propagation-stopped flag across browsers jQuery supports, including environments where inspecting the raw event was inconsistent.

jQuery 1.3+ · all browsers

jQuery event.isImmediatePropagationStopped()

Check whether immediate propagation was stopped.

100% Universal
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
isImmediatePropagationStopped() Boolean

Bottom line: Call stopImmediatePropagation() to halt the handler queue — call isImmediatePropagationStopped() to verify.

Conclusion

event.isImmediatePropagationStopped() tells you whether the handler queue on the current element was halted. The official demo shows it flip from “not called” to “called” immediately after stopImmediatePropagation().

Use it when multiple handlers share one element and later code must respect an earlier stop — especially with validation, analytics, and stacked plugins.

💡 Best Practices

✅ Do

  • Call event.stopImmediatePropagation() explicitly when you must skip remaining handlers
  • Check isImmediatePropagationStopped() in shared helpers
  • Control bind order — run validation handlers before save handlers
  • Log the flag while debugging multi-handler bugs
  • Pair with stopImmediatePropagation() — one stops, one verifies

❌ Don’t

  • Call isImmediatePropagationStopped() expecting to reset the flag
  • Confuse with isPropagationStopped() or isDefaultPrevented()
  • Assume return false sets the immediate flag — it does not
  • Use stopImmediatePropagation when stopPropagation alone is enough
  • Bind critical handlers after a plugin that may stop immediate propagation

Key Takeaways

Knowledge Unlocked

Five things to remember about isImmediatePropagationStopped()

Read whether the handler queue was halted.

5
Core concepts
stop 02

stopImmediatePropagation

Sets true

Pair
demo 03

Official

not called → called

Demo
queue 04

Handler queue

Same element

Use
vs 05

stopPropagation

Different flag

Compare

❓ Frequently Asked Questions

event.isImmediatePropagationStopped() returns true if event.stopImmediatePropagation() 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 multiple handlers are bound to the same element and a later handler (or helper function) needs to know whether an earlier handler already called stopImmediatePropagation() — for example, skipping analytics or secondary UI updates when a primary handler halted the handler queue.
stopPropagation() stops the event from bubbling to parent elements but other handlers on the same element still run. stopImmediatePropagation() stops both bubbling and any remaining handlers registered on the same element for this dispatch.
No. isPropagationStopped() reports whether stopPropagation() was called. isImmediatePropagationStopped() reports whether stopImmediatePropagation() was called. Calling stopImmediatePropagation() also stops propagation, but stopPropagation() alone does not set the immediate flag.
No. isImmediatePropagationStopped() only reports state — it does not reset the flag. Once stopImmediatePropagation() runs, remaining handlers on that element are skipped for the current dispatch.
In jQuery handlers, return false calls preventDefault() and stopPropagation(), not stopImmediatePropagation(). Remaining handlers on the same element may still run unless you explicitly call stopImmediatePropagation().
Did you know?

jQuery added isImmediatePropagationStopped() alongside isPropagationStopped() and isDefaultPrevented() in version 1.3 — giving handlers three read-only checks for the three main event flags. The underlying behavior comes from DOM Level 3’s stopImmediatePropagation().

Next: event.stopPropagation()

Stop event bubbling to parent elements while same-element handlers still run.

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

6 people found this page helpful