.mouseup() is a shorthand for binding or triggering the mouseup event (button release). With a handler it binds; with no arguments it triggers. Prefer .on / .trigger in new code.
Optional data (1.4.3+): .mouseup({ key: "v" }, handler) → event.data.
Trigger (legacy): .mouseup() with no args — or use .trigger("mouseup").
Piece
Required?
Role
handler
For bind
Runs on mouse button release
eventData
Optional
Available as event.data
No args
—
Triggers mouseup on the set
Return value
—
jQuery set (chainable)
Pseudocode
Pseudocode
function mouseup(element, handler?):
if handler given:
bind "mouseup" → handler // like .on("mouseup", handler)
else:
trigger "mouseup" // like .trigger("mouseup")
// Prefer naming the event explicitly with on / trigger
Reference
Cheat Sheet
Quick map from shorthand to modern calls.
Legacy
Modern
.mouseup(fn)
.on("mouseup", fn)
.mouseup(data, fn)
.on("mouseup", data, fn)
.mouseup()
.trigger("mouseup")
Unbind
.off("mouseup")
Added
1.0 (data form 1.4.3)
Status
Deprecated 3.3+
Try it
Live Preview
Run presets that show bind, eventData, and no-arg trigger via .mouseup().
Legacy demos for reading old code — prefer .on / .trigger in new projects.
Result
Handler ran via .mouseup(fn).
Code
jQuery Examples
Short snippets for legacy .mouseup(). Prefer the modern forms in new work — use Try It Yourself to experiment.
Example 1 — Bind with .mouseup(handler)
Deprecated shorthand for .on("mouseup", handler).
jQuery
$("#target").mouseup(function () {
console.log("Handler ran via .mouseup(fn).");
});
.mouseup() with no arguments fires the event — prefer .trigger("mouseup").
jQuery
$("#target").mouseup(function () {
console.log("Handler for mouseup called.");
});
$("#fire").click(function () {
$("#target").mouseup(); // same idea as .trigger("mouseup")
});
Press mouse and release here. Mouse down. Mouse up.
How It Works
.mousedown(fn) appends on press (also deprecated).
.mouseup(fn) appends on release.
Order is down then up for a normal press.
Modern:.on("mousedown", …).on("mouseup", …).
Edge Cases & Pitfalls
Common traps when reading or writing .mouseup() code.
deprecated
Do not use in new code
Binding forms are deprecated since 3.3. Teach and write .on("mouseup") instead.
vs-click
Release ≠ click
mouseup fires on release under the pointer; click needs press + release on the same element. Prefer click for most buttons.
overload
Bind vs trigger looks similar
.mouseup(fn) binds; .mouseup() triggers. Check the arguments before assuming.
delegation
No child-selector form
.mouseup() cannot do .on("mouseup", "li", fn). For dynamic lists, use .on with a selector.
drag
End drags on document
Handle-only .mouseup() misses releases outside the element. Prefer $(document).one("mouseup", fn).
Compatibility
Browser Support
.mouseup() has existed since jQuery 1.0 (eventData since 1.4.3). It still runs in jQuery 3.x browsers, but is deprecated since 3.3 — prefer .on("mouseup") / .trigger("mouseup").
✓ Deprecated 3.3+
.mouseup() shorthand
Works wherever jQuery event APIs work in the browser. Use on/trigger for new code.
Switching to .on / .trigger does not slow you down — it clarifies intent and unlocks delegation.
Remember
Key Takeaways
Deprecated:.mouseup(handler) since jQuery 3.3.
Bind: use .on("mouseup", fn) instead.
Fire: use .trigger("mouseup"), not bare .mouseup().
Timing: release event — often for drag-end, not normal clicks.
One line:.mouseup() is a deprecated shorthand — prefer .on("mouseup") and .trigger("mouseup").
Frequently Asked Questions
With a handler — .mouseup(handler) or .mouseup(eventData, handler) — it binds a callback that runs when a mouse button is released over the element. With no arguments — .mouseup() — it triggers mouseup on each matched element. Binding forms are deprecated since jQuery 3.3.
Yes. Prefer .on("mouseup", handler) or .on("mouseup", eventData, handler) to bind, and .trigger("mouseup") to fire. jQuery 3.x still runs .mouseup() for compatibility.
.mouseup(handler) only registers a callback. .mouseup() with no arguments triggers the event (same idea as .trigger("mouseup")).
Replace .mouseup(fn) with .on("mouseup", fn). Replace .mouseup(data, fn) with .on("mouseup", data, fn). Replace no-arg .mouseup() with .trigger("mouseup").
mouseup fires on release under the pointer. click needs press and release inside the same element. Prefer click for normal buttons; use mouseup for release / drag-end behavior.
Since 1.4.3 you can pass data before the handler. It appears as event.data inside the callback. Modern form: .on("mouseup", eventData, handler).