event.result holds the last non-undefined value returned by a handler that ran earlier during the same event dispatch. Later handlers can read it. Especially useful for custom events. Available since jQuery 1.3.
Remember
event.result // last non-undefined handler return (same dispatch)
$("button").on("click", function () {
return "hey"; // stored on event.result
});
$("button").on("click", function (event) {
console.log(event.result); // "hey"
});
// Returning undefined does NOT clear a previous result
Return a value from one handler; read event.result in a later handler on the same element.
Bind two (or more) handlers on the same element and event.
In an earlier handler, return a non-undefined value.
In a later handler, read event.result.
Remember: undefined returns do not overwrite a previous result.
For plugins, use the same pattern on custom events with .trigger().
Piece
Required?
Role
Multiple handlers
Yes
Same element + same event type
return value
Yes (to set)
Non-undefined updates event.result
event.result
—
Read by later handlers
Handler order
Yes
Bind order = run order (unless namespaces / special cases)
Pseudocode
Pseudocode
element.on(type, handlerA)
element.on(type, handlerB)
when event fires:
result = undefined
for each handler in bind order:
value = handler(event)
if value is not undefined:
result = value
event.result = result
// handlerB can read event.result set by handlerA
Reference
Cheat Sheet
Keep these facts handy while chaining handlers.
Topic
Detail
Type
Last non-undefined return (any type)
Since
jQuery 1.3
Scope
Same element, same dispatch
Official demo
First returns "hey"; second shows it
undefined
Does not overwrite previous result
vs event.data
Return chain vs bind-time data
Custom events
Yes — great for pipelines
Mutates?
Updated by jQuery from returns
Try it
Live Preview
Click the button — the first handler returns a string; the second shows event.result, like the official jQuery API demo.
UI. Second handler shows event.result or a success note.
Example 3 — undefined Does Not Overwrite
A middle handler with no return leaves the first result intact.
jQuery
$("button").on("click", function () {
return "first";
});
$("button").on("click", function () {
// returns undefined — does not clear result
});
$("button").on("click", function (event) {
$("#out").text("result: " + event.result);
});
Choose. Static config → data; pass between handlers → result.
Edge Cases & Pitfalls
Watch for these when using event.result.
undefined
undefined does not clear the result
Only a non-undefined return updates event.result. Returning nothing leaves the previous value.
order
Bind order matters
Handlers run in bind order. A handler that needs event.result must be bound after the one that returns it.
false
return false is special
In jQuery, return false also calls preventDefault() and stopPropagation(). Prefer returning other values for pure data passing.
vs data
Not the same as event.data
event.data is bind-time; event.result is dispatch-time from prior returns. Do not mix them up.
Compatibility
Browser Support
event.result is a jQuery event-object property (since 1.3). It is provided by jQuery’s event system, not a native DOM property. Works wherever your loaded jQuery version runs.
✓ Stable · jQuery 1.3+
event.result
Supported wherever jQuery 1.3+ is loaded. Prefer jQuery 3.x with .on() / .trigger() for modern handler chains.
100%jQuery 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
event.result1.3+
Bottom line: Safe for production. Use return + event.result to pass values along a handler chain, especially for custom events.
Analysis
Performance Notes
Approach
Cost
Best for
return + event.result
Negligible
Short handler chains
Many handlers on one event
Linear in count
Keep chains small and clear
Large objects as result
Cheap to store
Avoid huge allocations every click
Custom event pipelines
Fine
Plugin steps / beforeSave hooks
Storing event.result is free. Cost is the handlers themselves — keep each step small and intentional.
Remember
Key Takeaways
Role: last non-undefined return from an earlier handler on this dispatch.
Pattern:return value in handler A → read event.result in handler B.
Custom events: great for plugin pipelines with .trigger().
vs data:event.data is bind-time; result is dispatch-time.
One line:event.result is “what the previous handler returned (if it returned something).”
Frequently Asked Questions
event.result holds the last non-undefined value returned by a handler that ran earlier during the same event dispatch on the same element. Available since jQuery 1.3. Useful for passing values between handlers, especially on custom events.
Each handler can return a value, but only the most recent non-undefined return is stored on event.result for later handlers. The next handler does not get the return as an argument — it reads event.result.
Bind two click handlers on a button. The first returns "hey". The second sets a paragraph’s HTML to event.result — displaying hey.
No. jQuery updates event.result only when a handler returns a value that is not undefined. A middle handler that returns undefined leaves the previous result intact.
Yes. When you .trigger() a custom event, handlers run in order and can pass data forward via return values. Later handlers read event.result — useful for plugin pipelines.
No. event.data is set at bind time with .on("click", { id: 1 }, fn). event.result is a return value from an earlier handler during dispatch. They are separate channels.