A Number property that tells you which key or which mouse button was pressed. Added in jQuery 1.1.3. It normalizes keyCode / charCode for keys, and reports 1 / 2 / 3 for left / middle / right mouse buttons.
Remember
event.which // Number property — no parentheses
// Official keydown idea
$("#whichkey").on("keydown", function (event) {
$("#log").html(event.type + ": " + event.which);
});
// Mouse: 1 = left, 2 = middle, 3 = right
// Keys: 13 = Enter, 27 = Escape (common codes)
Read it on the event object inside a keyboard or mouse handler.
Bind keydown (keys) or mousedown / mouseup (buttons).
Accept the event argument in the handler.
Read event.which (property — no ()).
Compare to a known code (13 Enter, 1 left button, …).
Optionally show event.type + ": " + event.which while learning.
Piece
Required?
Role
event
Yes
jQuery event object in the handler
which
—
Number: key code or mouse button
Arguments
N/A
Property — not a function
type
Optional
Event name next to the number
Pseudocode
Pseudocode
input.on("keydown", handler)
box.on("mousedown", handler)
when keydown fires:
which = normalized key code
log type + ": " + which
when mousedown fires:
which = 1 (left) or 2 (middle) or 3 (right)
log type + ": " + which
// Common key checks:
if which === 13 → Enter
if which === 27 → Escape
On keys it is a key code; on mouse down/up it is a button (1–3).
click
Prefer mousedown for buttons
Official mouse demo uses mousedown / mouseup, not click.
modern
event.key is clearer for new code
Strings like "Enter" avoid magic numbers — use them outside legacy jQuery patterns when you can.
Compatibility
Browser Support
event.which is a jQuery event-object property available since 1.1.3. It normalizes key and mouse button values across browsers. Works wherever your loaded jQuery version runs.
✓ Stable · jQuery 1.1.3+
event.which
Supported in jQuery 1.1.3–3.x. Prefer jQuery 3.x with .on() handlers. Use keydown for keys and mousedown/mouseup for buttons 1/2/3.
100%With jQuery 1.1.3+
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
whichjQuery 1.1.3+
Bottom line: Safe for jQuery codebases. For new non-jQuery code, prefer event.key (and modern mouse button APIs) over raw which.
Analysis
Performance Notes
Approach
Cost
Best for
Read event.which
Free
One Number check in a handler
Compare to 13 / 27
Free
Enter / Escape shortcuts
Document-level keydown
Cheap
Global shortcuts; keep the handler tiny
Reading which is free. Cost comes from work you do after the compare — keep shortcut handlers short.
Remember
Key Takeaways
Role: Number — which key or mouse button fired.
Official: log event.type + ": " + event.which.
Mouse:1 left · 2 middle · 3 right.
Keys:13 Enter · 27 Escape.
One line:event.which is jQuery’s normalized Number for “which key or button?”
Frequently Asked Questions
event.which is a Number property on the jQuery event object. For keyboard events it indicates which key was pressed; for mousedown and mouseup it indicates which button was pressed. Available since jQuery 1.1.3.
Bind keydown: $("#whichkey").on("keydown", function(event) { $("#log").html(event.type + ": " + event.which); }); The log shows the event type and numeric code. The mousedown variant logs 1, 2, or 3 for left, middle, and right.
jQuery recommends event.which for keyboard input. It normalizes event.keyCode and event.charCode into one Number. Prefer which over raw keyCode in jQuery handlers.
On mousedown and mouseup, event.which reports 1 for left, 2 for middle, and 3 for right. Use event.which instead of event.button — jQuery normalizes browser differences.
Compare event.which in a keydown handler: 13 for Enter, 27 for Escape. Bind on the input or container and call preventDefault when you handle the key yourself.
In the modern DOM, KeyboardEvent.which is deprecated in favor of event.key (and mouse buttons favor event.buttons / event.button). jQuery still documents event.which as the normalized Number for key and mouse in jQuery code. Prefer event.key for new non-jQuery code when you can.