jQuery event.result Property

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

What Is event.result?

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
NeedUse
Pass value to next handlerreturn value → later event.result
Bind-time payloadevent.data
Fire custom event.trigger("name")
Bind handlers.on("click", fn)
Event nameevent.type

How to Use event.result

Return a value from one handler; read event.result in a later handler on the same element.

  1. Bind two (or more) handlers on the same element and event.
  2. In an earlier handler, return a non-undefined value.
  3. In a later handler, read event.result.
  4. Remember: undefined returns do not overwrite a previous result.
  5. For plugins, use the same pattern on custom events with .trigger().
PieceRequired?Role
Multiple handlersYesSame element + same event type
return valueYes (to set)Non-undefined updates event.result
event.result—Read by later handlers
Handler orderYesBind 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

Cheat Sheet

Keep these facts handy while chaining handlers.

TopicDetail
TypeLast non-undefined return (any type)
SincejQuery 1.3
ScopeSame element, same dispatch
Official demoFirst returns "hey"; second shows it
undefinedDoes not overwrite previous result
vs event.dataReturn chain vs bind-time data
Custom eventsYes — great for pipelines
Mutates?Updated by jQuery from returns

Live Preview

Click the button — the first handler returns a string; the second shows event.result, like the official jQuery API demo.

Handlers

Handler 1 returns "hey"; handler 2 reads event.result.

Result
Click the button.

jQuery Examples

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

Example 1 — Official Demo: Show Prior Return

First handler returns "hey"; second displays event.result.

jQuery
$("button").on("click", function () {
  return "hey";
});

$("button").on("click", function (event) {
  $("#out").text(event.result);
});
Try It Yourself

How It Works

  1. First handler. Returns the string "hey".
  2. Store. jQuery sets event.result to that value.
  3. Second handler. Runs next on the same click.
  4. Read. Writes event.result into #out.

Example 2 — Validation Chain

Return an error string from the first handler; show it in the second.

jQuery
$("#submit").on("click", function () {
  var val = $("#email").val();
  if (!val || val.indexOf("@") === -1) {
    return "Invalid email address";
  }
});

$("#submit").on("click", function (event) {
  if (event.result) {
    $("#out").text(event.result);
  } else {
    $("#out").text("Looks good");
  }
});
Try It Yourself

How It Works

  1. Validate. First handler checks the email.
  2. Error. Returns a message string when invalid.
  3. OK. Returns nothing (undefined) when valid.
  4. 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);
});
Try It Yourself

How It Works

  1. Set. First handler returns "first".
  2. Skip. Second returns undefined — no overwrite.
  3. Read. Third still sees "first".
  4. Rule. Only non-undefined returns update event.result.

Example 4 — Custom Event Pipeline

Enrich an object across handlers on a custom beforeSave event.

jQuery
$("#widget").on("beforeSave", function () {
  return { step: 1, msg: "validated" };
});

$("#widget").on("beforeSave", function (event) {
  var prev = event.result || {};
  return { step: prev.step + 1, msg: prev.msg + ", enriched" };
});

$("#widget").on("beforeSave", function (event) {
  $("#out").text(JSON.stringify(event.result));
});

$("#go").on("click", function () {
  $("#widget").trigger("beforeSave");
});
Try It Yourself

How It Works

  1. Start. First handler returns a small object.
  2. Enrich. Second reads event.result and returns a new object.
  3. Finish. Third logs the final event.result.
  4. Trigger. A button fires beforeSave with .trigger().

Example 5 — event.result vs event.data

Bind-time data and handler returns are different channels.

jQuery
$("#btn").on("click", { source: "bind" }, function () {
  return "from-return";
});

$("#btn").on("click", { source: "bind" }, function (event) {
  $("#out").text(
    "event.data.source: " + event.data.source + "\n" +
    "event.result: " + event.result
  );
});
Try It Yourself

How It Works

  1. data. Set when binding — available as event.data.
  2. result. Set by the first handler’s return.
  3. Second handler. Can read both on the same click.
  4. 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.

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 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
event.result 1.3+

Bottom line: Safe for production. Use return + event.result to pass values along a handler chain, especially for custom events.

Performance Notes

ApproachCostBest for
return + event.resultNegligibleShort handler chains
Many handlers on one eventLinear in countKeep chains small and clear
Large objects as resultCheap to storeAvoid huge allocations every click
Custom event pipelinesFinePlugin steps / beforeSave hooks

Storing event.result is free. Cost is the handlers themselves — keep each step small and intentional.

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.

Next: event.timeStamp

Read when the browser created the event and measure click deltas.

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

9 people found this page helpful