.add()

Create a new jQuery object with elements added to the set of matched elements.

.add(selector)🡢 jQuery

selector SelectorA string representing a selector expression to find additional elements to add to the set of matched elements.

.add(elements)🡢 jQuery

elements ElementOne or more elements to add to the set of matched elements.

.add(html)🡢 jQuery

html htmlStringAn HTML fragment to add to the set of matched elements.

.add(selection)🡢 jQuery

selection jQueryAn existing jQuery object to add to the set of matched elements.

.add(selector, context)🡢 jQuery

selector SelectorA string representing a selector expression to find additional elements to add to the set of matched elements.
context ElementThe point in the document at which the selector should begin matching; similar to the context argument of the $(selector, context) method.

Given a jQuery object that represents a set of DOM elements, the .add() method constructs a new jQuery object from the union of those elements and the ones passed into the method. The argument to .add() can be pretty much anything that $() accepts, including a jQuery selector expression, references to DOM elements, or an HTML snippet.

Do not assume that this method appends the elements to the existing collection in the order they are passed to the .add() method. When all elements are members of the same document, the resulting collection from .add() will be sorted in document order; that is, in order of each element's appearance in the document. If the collection consists of elements from different documents or ones not in any document, the sort order is undefined. To create a jQuery object with elements in a well-defined order and without sorting overhead, use the $(array_of_DOM_elements) signature.

The updated set of elements can be used in a following (chained) method, or assigned to a variable for later use. For example:

$("p").add("div").addClass("widget");
var pdiv = $("p").add("div");

The following will not save the added elements, because the .add() method creates a new set and leaves the original set in pdiv unchanged:

var pdiv = $("p");
pdiv.add("div"); // WRONG, pdiv will not change

Consider a page with a simple list and a paragraph following it:

<ul>
  <li>list item 1</li>
  <li>list item 2</li>
  <li>list item 3</li>
</ul>
<p>a paragraph</p>

We can select the list items and then the paragraph by using either a selector or a reference to the DOM element itself as the .add() method's argument:

$("li").add("p").css("background-color", "red");

Or:

$("li")
  .add(document.getElementsByTagName("p")[0])
  .css("background-color", "red");

The result of this call is a red background behind all four elements. Using an HTML snippet as the .add() method's argument (as in the third version), we can create additional elements on the fly and add those elements to the matched set of elements. Let's say, for example, that we want to alter the background of the list items along with a newly created paragraph:

$("li").add("<p id='new'>new paragraph</p>").css("background-color", "red");

Although the new paragraph has been created and its background color changed, it still does not appear on the page. To place it on the page, we could add one of the insertion methods to the chain.

As of jQuery 1.4 the results from .add() will always be returned in document order (rather than a simple concatenation).

Note: To reverse the .add() you can use .not( elements | selector ) to remove elements from the jQuery results, or .end() to return to the selection before you added.

Finds all divs and makes a border. Then adds all paragraphs to the jQuery object to set their backgrounds yellow.

JS
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>

<p>Added this... (notice no border)</p>
CSS
div {
  width: 60px;
  height: 60px;
  margin: 10px;
  float: left;
}
p {
  clear: left;
  font-weight: bold;
  font-size: 16px;
  color: blue;
  margin: 0 10px;
  padding: 2px;
}
HTML
$("div").css("border", "2px solid red").add("p").css("background", "yellow");
DEMO

Adds more elements, matched by the given expression, to the set of matched elements.

JS
<p>Hello</p>
<span>Hello Again</span>
HTML
$("p").add("span").css("background", "yellow");
DEMO

Adds more elements, created on the fly, to the set of matched elements.

JS
<p>Hello</p>
HTML
$("p").clone().add("<span>Again</span>").appendTo(document.body);
DEMO

Adds one or more Elements to the set of matched elements.

JS
<p>Hello</p>
<span id="a">Hello Again</span>
HTML
$("p").add(document.getElementById("a")).css("background", "yellow");
DEMO

Demonstrates how to add (or push) elements to an existing collection

JS
<p>Hello</p>
<span id="a">Hello Again</span>
HTML
var collection = $("p");
// Capture the new collection
collection = collection.add(document.getElementById("a"));
collection.css("background", "yellow");
DEMO

Looking for a Web Developer?

👋

Hi! I'm Basti, author of this site. If you are looking for a web developer with 15+ years of experience, holla at me!

Be it the good 'ol jQuery, vanilla JS or modern frameworks like Vue and Svelte, front- or backend, I can help you.

Just write me at jobs@jqapi.com :)