jQuery event.currentTarget

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

What Is event.currentTarget?

event.currentTarget is the DOM element whose handler is running during the bubbling phase. Added in jQuery 1.3. It typically equals this in a normal .on() handler.

Remember
event.currentTarget  // Element — handler owner (usually === this)
event.target         // Element — where the event started
event.delegateTarget // Element — where .on() was attached

$("p").on("click", function (event) {
  event.currentTarget === this;  // true (official demo)
});
NeedUse
Handler elementevent.currentTarget or this
Click originevent.target
Delegation parentevent.delegateTarget
Bind handler.on("click", fn)
Fix this$.proxy(fn, ctx)

How to Use event.currentTarget

Read it inside any jQuery event handler to identify the listener element.

  1. Bind with .on("click", handler) (or any event type).
  2. Accept the event object: function (event) { … }.
  3. Read event.currentTarget — wrap with $(event.currentTarget) if needed.
  4. Compare with event.target when the click landed on a child.
  5. For delegated binds, use event.delegateTarget for the attach parent.
PieceRequired?Role
eventYesjQuery event object passed to the handler
event.currentTarget—Element whose handler is running
this—Same as currentTarget unless scope was changed
event.target—Deepest element that started the event

Pseudocode

Pseudocode
element.on("click", handler)

when click bubbles to element:
    event.currentTarget = element   // handler owner
    event.target = clickOrigin      // deepest node
    this = event.currentTarget      // normal .on() bind
    call handler(event)

// Delegation: .on("click", "li", fn)
//   currentTarget / this = matched li
//   delegateTarget = element where .on() was called

Cheat Sheet

Keep these facts handy while debugging event handlers.

TopicDetail
TypeDOM Element (not a jQuery object)
SincejQuery 1.3
vs thisEqual in normal handlers
vs targetHandler owner vs event origin
vs delegateTargetMatched / handler element vs attach parent
Wrap$(event.currentTarget)
BubblingChanges per handler on the path
Official docsapi.jquery.com/event.currentTarget

Live Preview

Click the nested boxes. Compare currentTarget, target, and this — same idea as the official jQuery API demo.

Click a box

Outer and inner both listen for click — note which currentTarget each handler reports.

Log
Waiting for a click…

jQuery Examples

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

Example 1 — Official: currentTarget === this

Click a paragraph; confirm the official equality check.

jQuery
$("p").on("click", function (event) {
  $("#out").text(
    "event.currentTarget === this → " +
    (event.currentTarget === this)
  );
});
Try It Yourself

How It Works

  1. Bind. Every p gets a click handler.
  2. Click. The handler on that paragraph runs.
  3. Compare. event.currentTarget and this are the same element.
  4. Result. Output is true — the official demo.

Example 2 — currentTarget vs target

Click a child inside a button — origin and handler owner can differ.

jQuery
$("#btn").on("click", function (event) {
  $("#out").text(
    "currentTarget: " + event.currentTarget.id + "\\n" +
    "target: " + event.target.tagName
  );
});
Try It Yourself

How It Works

  1. Bind. The handler is on #btn.
  2. Click child. The event starts on the inner span.
  3. target. event.target is the span (origin).
  4. currentTarget. Still #btn — the element whose handler ran.

Example 3 — Delegation: Matched Element vs Parent

With .on("click", "li", fn), currentTarget is the li; delegateTarget is the list.

jQuery
$("#list").on("click", "li", function (event) {
  $("#out").text(
    "currentTarget: " + event.currentTarget.tagName + "\\n" +
    "this text: " + $(this).text() + "\\n" +
    "delegateTarget: #" + event.delegateTarget.id
  );
});
Try It Yourself

How It Works

  1. Attach. The listener lives on #list.
  2. Match. jQuery runs the handler for the clicked li.
  3. currentTarget / this. Both are that li.
  4. delegateTarget. Is #list — use it when you need the parent.

Example 4 — $.proxy Changes this

When context is forced, currentTarget still points at the element.

jQuery
var app = { name: "App" };

function onClick(event) {
  $("#out").text(
    "this.name: " + this.name + "\\n" +
    "currentTarget id: " + event.currentTarget.id + "\\n" +
    "same as this? " + (event.currentTarget === this)
  );
}

$("#btn").on("click", $.proxy(onClick, app));
Try It Yourself

How It Works

  1. Proxy. $.proxy(onClick, app) forces this to app.
  2. Click. The handler still runs for #btn.
  3. this. Is the app object — not the button.
  4. currentTarget. Remains #btn — use it for the element.

Example 5 — Highlight the Handler Element

Use $(event.currentTarget) to style the listener that fired.

jQuery
$(".card").on("click", function (event) {
  $(".card").css("font-weight", "normal");
  $(event.currentTarget).css("font-weight", "bold");
  $("#out").text("Active: " + $(event.currentTarget).text());
});
Try It Yourself

How It Works

  1. Bind. Each .card has its own click handler.
  2. Reset. All cards go back to normal weight.
  3. Highlight. Style event.currentTarget — the card that handled the click.
  4. Report. Show which card became active.

Edge Cases & Pitfalls

Watch for these when reading event.currentTarget.

proxy

this is not always the element

With $.proxy, .bind(), or arrow functions, trust event.currentTarget for the handler element.

delegation

Do not confuse with delegateTarget

Delegated currentTarget is the matched child; the attach parent is event.delegateTarget.

wrap

It is a raw DOM node

Use $(event.currentTarget) before calling jQuery methods like .text() or .addClass().

bubble

Changes on the bubble path

Parent handlers see their own currentTarget; event.target stays the original origin.

Browser Support

event.currentTarget is a standard DOM Event property. jQuery exposes it on the normalized event object since 1.3. Works wherever your loaded jQuery version runs.

✓ Stable · Event property

event.currentTarget

Supported in all modern browsers via the DOM Event API. Prefer jQuery 3.x for a consistent event object with currentTarget, target, and delegateTarget.

100% Property support
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
currentTarget Universal

Bottom line: Safe for production. Use currentTarget for the handler element; use target for the click origin; use delegateTarget for the .on() attach parent.

Performance Notes

ApproachCostBest for
Read event.currentTargetFreeIdentifying the handler element
$(event.currentTarget)Tiny wrapCalling jQuery methods
Delegated .on(parent, sel, fn)CheapMany / dynamic children

Reading currentTarget has no meaningful cost. Prefer one delegated handler on a parent over binding every child when the list is large or dynamic.

Key Takeaways

  • Role: element whose handler is running right now.
  • Default: event.currentTarget === this in normal binds.
  • vs target: handler owner vs event origin.
  • Delegation: matched element is currentTarget; parent is delegateTarget.

One line: event.currentTarget is “which element’s handler is running” — usually the same as this.

Frequently Asked Questions

event.currentTarget is the DOM element whose handler is currently running during the bubbling phase. Available since jQuery 1.3. It typically equals this inside a normal .on() handler.
In a normal handler, yes — event.currentTarget === this is true. If you use jQuery.proxy, Function.prototype.bind, or an arrow function that captures outer this, this can change while event.currentTarget stays the element running the handler.
event.target is where the event started (deepest clicked element). event.currentTarget is the element whose handler is running. Click a span inside a button: target may be the span; currentTarget on the button handler is the button.
With delegation — $("#list").on("click", "li", fn) — this and event.currentTarget are the matched li. event.delegateTarget is #list (where the handler was attached). On a direct bind, delegateTarget usually equals currentTarget.
For typical .on() handlers they match. Prefer event.currentTarget when this might be overridden (proxy, bind, class methods). Prefer this / $(this) for the matched element in delegated handlers — it is the same as currentTarget.
Yes. Each handler on the bubble path sees its own element as currentTarget. event.target stays the original origin for all of them.

Next: event.target

Read the DOM element that initiated the event.

event.target 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.

10 people found this page helpful