event.delegateTarget is the DOM element where the handler was attached. Most useful with delegated .on("click", "button", fn) — it names the ancestor, not the matched child. Added in jQuery 1.7.
Remember
event.delegateTarget // Element — where .on() was called
event.currentTarget // Element — usually === this (matched / handler element)
event.target // Element — deepest click origin
// Official idea
$(".box").on("click", "button", function (event) {
$(event.delegateTarget).css("background-color", "red");
// this = button; delegateTarget = .box
});
// Direct bind (no selector):
// delegateTarget === currentTarget
Many roots. Each .card gets the same delegated bind.
Shared fn. One function handles every card.
Identify.event.delegateTarget.id names which card fired.
Child.$(this).text() is the clicked button label.
Edge Cases & Pitfalls
Watch for these when reading event.delegateTarget.
vs this
Do not confuse with this
Delegated this is the matched child. The parent is event.delegateTarget.
currentTarget
Not always equal to currentTarget
Equal on direct binds. On delegated binds, currentTarget is the child; delegateTarget is the parent.
wrap
Raw DOM node
Use $(event.delegateTarget) before .css(), .off(), or .addClass().
jquery
jQuery-only property
Not a standard DOM Event field. Rely on it inside jQuery handlers, not bare addEventListener.
Compatibility
Browser Support
event.delegateTarget is a jQuery event-object property (not a native DOM field). Available since jQuery 1.7 with .on() / .delegate(). Works wherever your loaded jQuery version runs.
✓ Stable · jQuery 1.7+
event.delegateTarget
Supported in jQuery 1.7–3.x. Prefer .on(parent, selector, handler) for modern delegation. Native equivalent for the child is currentTarget; the attach parent is a jQuery concept.
100%With jQuery 1.7+
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
delegateTargetjQuery 1.7+
Bottom line: Safe for production with jQuery 1.7+. Use it to reach the .on() attach parent from a delegated handler.
Analysis
Performance Notes
Approach
Cost
Best for
Delegated .on(parent, sel, fn)
Cheap
Many / dynamic children
Read event.delegateTarget
Free
Updating the container
Bind every child directly
More listeners
Avoid when the list grows
Reading delegateTarget has no meaningful cost. Delegation itself is the win — one listener on a parent instead of one per child.
Remember
Key Takeaways
Role: element where the jQuery handler was attached.
Use: style the container, or .off() at the bind point.
One line:event.delegateTarget is “where I called .on()” — the delegation root.
Frequently Asked Questions
event.delegateTarget is the DOM element where the currently running jQuery handler was attached. For $(".box").on("click", "button", fn), it is the .box ancestor — not the button. Available since jQuery 1.7.
In a delegated handler, this (and usually event.currentTarget) is the element that matched the selector — the clicked button. event.delegateTarget is the parent where you called .on(). Use this for the child; use delegateTarget for the container.
On a direct bind (no selector), yes — delegateTarget equals currentTarget. On a delegated bind, currentTarget is the matched child; delegateTarget is the attach parent.
When a delegated handler must update the container (official .box highlight), call .off() at the bind point, or tell which of several delegated roots handled the event.
Yes. For .on("click", fn) with no selector, delegateTarget is still set and equals currentTarget — the element you bound to.
No. It is a jQuery event-object property for naming the attach point. Native events expose currentTarget during bubbling; jQuery adds delegateTarget for delegated .on() / .delegate() handlers.