.addClass(className) adds one or more CSS class names to each matched element (since jQuery 1.0). It updates the class attribute so stylesheet rules apply — without touching HTML text or inline styles.
Remember
$("p").addClass("selected")
$("p").addClass("selected highlight") // multiple (space)
$("p").addClass(["selected", "highlight"]) // array (3.3+)
// Does NOT replace — only appends missing names
Select elements, pass class names, then chain more jQuery if needed.
Select the element(s) with a jQuery selector.
Call .addClass("name") — or a space-separated list / array.
Optional: use a function when each element needs a different class.
Chain freely — .addClass() returns the same jQuery object.
Piece
Required?
Role
jQuery collection
Yes
Elements that receive the class(es)
className / array / function
Yes
What to append
Return
—
Same jQuery object (chainable)
Pseudocode
Pseudocode
for each matched element:
names = resolve argument (string | array | function)
for each class in names:
if element does not already have that class:
append it to the class attribute
// Official idea:
$("p").last().addClass("selected")
// last <p> gains "selected"; other classes stay
Reference
Cheat Sheet
Keep these facts handy while styling with classes.
Topic
Detail
Syntax
.addClass(className)
Since
jQuery 1.0 (array form: 3.3+)
Multiple
Space string or ["a", "b"]
Callback
function(index, currentClass) since 1.4
Duplicates
Already-present names are ignored
SVG / XML
Supported since jQuery 1.12 / 2.2
vs .css()
Classes vs inline style properties
Try it
Live Preview
Pick a class string and run .addClass() on a sample paragraph. The result shows the updated class attribute.
Hello
Browser demo of .addClass() — same idea as the examples below.
Result
class before: "card"
$("p").addClass("selected")
class after: "card selected"
Code
jQuery Examples
Short, copy-ready snippets. Open DevTools Console, or use Try It Yourself for a live editor.
Example 1 — Add One Class
Official API idea: add selected to the last paragraph.
Per element. jQuery calls the function once for each <li>.
Index. First arg is 0, 1, 2…
Return value. The string you return is added as a class.
Second arg. You also get currentClass if you need to branch on existing classes.
Edge Cases & Pitfalls
Check these before relying on .addClass() in UI code.
replace
It does not replace the class list
To wipe and set one class, use .attr("class", "only-this") — not .addClass() alone.
dot
Do not include the CSS dot
Write addClass("active"), not addClass(".active"). The leading dot is selector syntax only.
empty
Empty selection is a no-op
If the selector matches nothing, .addClass() quietly does nothing — no error.
legacy
Pre-1.12 used className only
Before jQuery 1.12/2.2, SVG/XML class updates were unreliable. Prefer a current jQuery for SVG icons.
Compatibility
Browser Support
.addClass() is a core jQuery CSS method (since 1.0). It needs a browser DOM with jQuery loaded — not Node.js without a DOM.
✓ jQuery 1.0+ · Browsers only
jQuery .addClass()
Works in Chrome, Firefox, Safari, Edge, and other browsers with jQuery. Array overload needs jQuery 3.3+. SVG/XML class updates solid since 1.12/2.2.
100%Browser 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
.addClass()Browsers
Bottom line: Use .addClass() in the browser with jQuery. Prefer 3.3+ if you pass class-name arrays.
Analysis
Performance Notes
Approach
Cost
Best for
.addClass("x")
Low
UI state changes
.css({…})
Similar
One-off computed styles
Native classList.add
Lowest
Hot paths without jQuery
Prefer classes over many inline .css() calls — the browser can reuse stylesheet rules, and your JS stays shorter.
Remember
Key Takeaways
Role:.addClass() appends class names; it never wipes the list.
Many at once: space string or array (3.3+).
Callback: return per-element names with function(index, currentClass).
Pair: remove / toggle / css for the other styling jobs.
One line: use .addClass() to turn stylesheet states on — append only, never replace.
Frequently Asked Questions
.addClass() appends one or more CSS class names to each element in the current jQuery collection. Existing classes stay in place — it never replaces the whole class attribute.
No. It only adds names that are missing. To swap classes, chain .removeClass() then .addClass(), or use .toggleClass() for on/off flips.
Yes. Pass a space-separated string — addClass('selected highlight') — or since jQuery 3.3 an array — addClass(['selected', 'highlight']).
Since jQuery 1.4 you can pass a function(index, currentClass). jQuery calls it once per element and adds the returned class name(s). Since 3.3 the callback may return an array.
.addClass() updates the class attribute so stylesheet rules apply. .css() sets inline style properties. Prefer classes for reusable UI states; use .css() for one-off computed values.
Yes, since jQuery 1.12/2.2 .addClass() writes the class attribute (not only className), so it works on HTML, SVG, and XML elements.