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)
});
Read it inside any jQuery event handler to identify the listener element.
Bind with .on("click", handler) (or any event type).
Accept the event object: function (event) { … }.
Read event.currentTarget — wrap with $(event.currentTarget) if needed.
Compare with event.target when the click landed on a child.
For delegated binds, use event.delegateTarget for the attach parent.
Piece
Required?
Role
event
Yes
jQuery 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
Reference
Cheat Sheet
Keep these facts handy while debugging event handlers.
Highlight. Style event.currentTarget — the card that handled the click.
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.
Compatibility
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 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
currentTargetUniversal
Bottom line: Safe for production. Use currentTarget for the handler element; use target for the click origin; use delegateTarget for the .on() attach parent.
Analysis
Performance Notes
Approach
Cost
Best for
Read event.currentTarget
Free
Identifying the handler element
$(event.currentTarget)
Tiny wrap
Calling jQuery methods
Delegated .on(parent, sel, fn)
Cheap
Many / 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.
Remember
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.