jQuery helper
Search, traverse, mutate
$('.menu').find('.item').addClass('is-ready')
A single chain reads quickly, but it can hide how many nodes you selected and where the DOM mutation really happens.
Reference and migration companion
Look up the native DOM, classList, style, and event APIs that replace the jQuery helpers most teams still inherit in legacy code.
Use the reference for fast API lookups, then open the migration guide when you need rollout patterns and common refactor recipes.
Task-first lookup
Search by DOM task, API category, or tag to move from helper to native method faster.
Refactor-ready examples
Copy compact examples that make one DOM step explicit instead of hiding it inside a chain.
Use this reference when you want to replace familiar jQuery helpers with the browser APIs already built into modern JavaScript.
Every entry keeps the same rhythm: what jQuery abstracts, the native API you reach for instead, and the official documentation link you can open when edge cases matter.
Best for
Incremental migrations, code reviews, and translating chained jQuery calls into explicit DOM steps.
What changes
The biggest mental shift is being explicit about collections, loop boundaries, and which DOM node you mutate.
Scope
This page focuses on the helpers teams replace most often. It is a practical reference, not a full mirror of the jQuery API.
Search by task, API name, or tag, then narrow the list with the category chips. Keep the matching section open while you replace one behavior at a time in your own component or template.
Tip: If the jQuery version operates on many elements, decide first whether the vanilla version should still touch all matches or whether you really only need the first node.
JavaScript works directly with DOM nodes and browser APIs. jQuery wraps those nodes in a chainable collection API that used to smooth over browser inconsistencies.
When you migrate away from jQuery, the main shift is to be explicit: query the element, choose the DOM property or method you need, and loop only when you truly have multiple matches.
Start here when you need to locate elements, move through parents and siblings, or narrow a set of matches before changing the DOM.
// jQuery to select all instances of class "select"
$(".select");
// JavaScript to select only the first instance of class "select"
document.querySelector(".select");
// To select all the instances of class "select"
document.querySelectorAll(".select");
Select Elements:
// Syntax
jQuery();
$(); // Shortcut
// Example
// Selects all the links among the descendants of the 'my-class' class.
jQuery('.my-class a');
$('.my-class a');
$("html") // To select the entire html.
$("body") // To select the entire html body.
// Syntax
document.querySelectorAll();
// Example
document.querySelector(selector)
document.querySelector('.my-class a')
document.body
// Syntax
.first();
// Example
$('.my-class a').first();
// Syntax
document.querySelector();
// Example
document.querySelector('.my-class a');
// Syntax
.find();
// Example
// Find all the span tags that are descendants of links within the 'my-class' class.
// Note: searches for all descendants not just for children.
$('.my-class a').find('span');
$('.my-class a').find('span').css('color', 'red');
// Syntax
// To find the first element (also if there's only one)
document.querySelector();
// To find all elements
document.querySelectorAll();
// Example
// At first querySelectorAll() returns a NodeList, so we have to loop through it to find all the span tags we want.
// For the sake of testing, I made the selected elements red, you can find the 'style.color' property below in this cheat sheet.
// finds all '.my-class a'
let nodes = document.querySelectorAll('.my-class a');
// loops through all '.my-class a'
for (let i = 0; i < nodes.length; i++) {
// checks if the individual '.my-class a' element has a
// 'span' descendant to avoid 'undefined' error
if (nodes[i].querySelector('span')) {
// colors span tags that are desdendants of '.my-class a'
nodes[i].querySelector('span').style.color = 'red';
}
}
// Syntax
.children();
.children('selector');
// Example
// Finds all the children of all '.my-class a' elements on the age
// Finds all the 'span' elements that are the children of any '.my-class a' element on the page
// Note: searches only for children (first-level of descendants)
$('.my-class a').children();
$('.my-class a').children('span');
$('.my-class a').children('span').css('color', 'blue'); // for testing
// Syntax
parentNode.children;
// Example
// 2nd example of the jQuery version above, plus makes the selected span tags blue for the sake of easy testing.
// for 1st example, only leave out the if check at the end (we need this because the JS version is not a method but a property, so we need to check which children are 'span')
// selects all the elements with 'my-class a' on the page
let items = document.querySelectorAll('.my-class a');
// loops through all the elements with '.my-class a'
for (let i = 0; i < items.length; i++) {
// finds the children of the current '.my-class a' element
let kids = items[i].children;
// loops through the children of the current '.my-class a' element
for (let j = 0; j < kids.length; j++) {
// checks if the child element is a span tag
if (kids[j].tagName == 'SPAN') {
kids[j].style.color = 'blue';
}
}
}
// Syntax
.parent();
// Example
// Selects the parent elements of ALL elements with 'my-class a' on the page.
$('.my-class a');
/* Syntax */
Node.parentNode;
// Example
// Selects the parent of the FIRST element with 'my-class a' on the page (for the sake of less repetition)
// For looping through all '.my-class a' elements, use the looping solution and querySelectorAll() from the two examples above.
let item = document.querySelector('.my-class a');
item.parentNode;
// Syntax
.siblings();
// Example
// Selects the siblings of ALL elements with the 'find-siblings' class on the page.
$('.find-siblings').siblings();
// Syntax
Node.parentNode.querySelectorAll(":not(#elem)");
// Example
// Selects the siblings of the FIRST element with the 'find-siblings' class.
// For looping through all 'find-siblings' elements, see examples #3
// and #4 the ':scope' pseudoclass is necessary for preventing the child elements
// of 'item' from being selected (otherwise querySelectorAll() searches through all descendants
// of 'item', with ':scope >' it loops through just the first level).
let item = document.querySelector('.find-siblings');
let siblings = item.parentNode.querySelectorAll(':scope > :not(.find-siblings)');
//Syntax
.next();
// Example
// Selects the next siblings of all elements with 'my-class a' on the page.
$('.my-class a').next();
//Syntax
nonDocumentTypeChildNode.nextElementSibling;
// Example
// For declaring the 'item' variable by selecting elements with
// 'my-class a' on the page, see examples #3, #4, #5.
item.nextElementSibling;
// Syntax
.prev();
// Example
// Selects the previous siblings of all elements with 'my-class a' on the page.
$('.my-class a').prev();
// Syntax
nonDocumentTypeChildNode.previousElementSibling;
// Example
// For declaring the 'item' variable by selecting elements with 'my-class a' on the page, see examples examples #3, #4, #5.
item.previousElementSibling;
Use these patterns when UI state lives in classes, attributes, or accessibility markers that must stay synchronized with the DOM.
// Syntax
.addClass();
// Example
// Adds the 'second-class' class to every 'my-class' element.
$('.my-class').addClass('second-class');
// Syntax
// Example
// For declaring the 'item' variable by selecting elements with'my-class' on the page, see examples examples #3, #4, #5.
item.classList.add('second-class');
// Syntax
.removeClass();
// Example
// Removes the 'second-class' class from every 'my-class' element.
// Removes 'second-class', then add 'third-class' to every 'my-class' element.
$('.my-class').removeClass('second-class');
$('.my-class').removeClass('second-class').addClass('third-class');
// Syntax
Element.classList.remove();
// Example
// For declaring the 'item' variable by selecting elements with 'my-class' on the page, see examples examples #3, #4, #5.
item.classList.remove('second-class');
// To use it together with add(), you need two separate statements.
item.classList.remove('second-class');
item.classList.add('third-class');
// Syntax
.toggleClass();
// Example
// Adds the 'active' class to elements with 'my-class' if they don ' have it remove it if they have it.
$('.my-class').toggleClass('active');
// Syntax
Element.classList.toggle();
// Example
// For declaring the 'item' variable, see examples #3, #4, #5.
item.classList.toggle('active');
// Syntax.
.hasClass();
// Example
// Checks if any element with 'my-class' has the 'active' class.
// Returns true or false
// If there's at least one element with 'active' it's true, otherwise false.
$('.my-class').hasClass('active');
// Syntax
element.classList.contains();
// Example
// Similar to the jQuery version, this one also checks if any element in the whole classList has the 'active' class
// If at least one element has 'active', it's true, otherwise false.
// For declaring the 'item' variable, see examples #3, #4, #5.
item.classList.contains('active');
// Syntax
.attr('attr-name');
// Example
// Returns the value of the href property of the FIRST occurrence of an element with 'my-class'
$('.my-class').attr('href');
/* Syntax */
Element.getAttribute('attr-name');
// Example
// For declaring the 'item' variable, see examples #3, #4, #5.
item.getAttribute('href');
// Syntax
.attr('attr-name', value);
// Example
// Sets the value of the href property for ALL contact links that have the 'contact-link' class
$('.contact-link').attr('href', 'contact.html');
.attr()
method as for getting an attribute value, but with two parameters instead of one)
// Syntax
Element.setAttribute();
// Example
// For declaring the 'item' variable, see examples #3, #4, #5.
item.setAttribute('href', 'contact.html');
// Syntax
.removeAttr('attr-name');
// Example
// Removes 'target' attributes from contact links.
$('.contact-link').removeAttr('target');
// Syntax
Element.removeAttribute();
// Example
// For declaring the 'item' variable, see examples #3, #4, #5.
item.removeAttribute('target');
These examples cover inserting markup, changing content, and updating inline state when a dedicated CSS class is not the right abstraction.
//Syntax
.append('html-string');
// Example
// Appends an extra list element to the end of every ordered list on the page.
$("ol").append("<li>");
// Syntax
Node.appendChild();
// Example
// For declaring the 'ol' variable, see examples #3, #4, #5.
ol.appendChild(document.createElement("li"));
// Syntax
.prepend('html-string');
// Example
// Prepends an extra list element to the beginning of every ordered list on the page.
$("ol").prepend("<li>");
// Syntax
Node.insertBefore();
// Example
// For declaring the 'ol' variable, see examples #3, #4, #5.
ol.insertBefore(document.createElement("li"), ol.firstChild);
// Syntax
.html();
.html('html-string');
// Example
// Gets the HTML content of the FIRST element that matches 'my-class'.
// Sets/resets the HTML content of EACH element that matches 'my-class'.
$('.my-class').html();
$('.my-class').html('<em>Hello</em>');
// Syntax
Element.innerHTML;
// Example
// For declaring the 'item' variable, see examples #3, #4, #5.
item.innerHTML; // gets the value.
item.innerHTML = '<em>Hello</em>'; // sets the value.
// Syntax
.css('property-name');
.css('property-name', value);
// Example
// Gets the 'color' value of the FIRST element that has 'my-class'.
// Sets the 'color' value to 'white' for EVERY element that has 'my-class'.
$('.my-class').css('color');
$('.my-class').css('color', 'white');
// Syntax
ElementCSSInlineStyle.style.propertyName = 'value';
// Example
// For declaring the 'item' variable, see examples #3, #4, #5.
item.style.color; // getting value
item.style.color = 'white'; // setting value
// Syntax
.text();
.text('text');
// Example
// Gets the text content of the FIRST element (and all of its descendants) that matches 'my-class'.
// Sets/resets the text content of EACH element that matches 'my-class'.
$('.my-class').text();
$('.my-class').text('<em>Hello</em>');
// Syntax
Element.textContent;
// Example
// For declaring the 'item' variable, see examples #3, #4, #5.
item.textContent; // gets the value
item.textContent = '<em>Hello</em>'; // sets the value
// Syntax
.val();
.val(val);
// Example
// Gets the value of the input with the 'name' name.
// Sets/resets the value of the input with the 'name' name.
$('input[name=name]').val();
$('input[name=name]').val('Marilyn Monroe');
// Syntax
HTMLInputElement.value;
// Example
// For declaring the 'input' variable, see examples #3, #4, #5.
input.value; // gets the value
input.value = 'Marilyn Monroe'; // sets the value
Finish with the patterns that usually control interaction state: showing or hiding UI and wiring event handlers directly to the DOM.
// Syntax
.hide();
// Example
// Hides all elements with 'my-class'.
$('.my-class').hide();
// Syntax
ElementCSSInlineStyle.style.display = 'none';
// Example
// For declaring the 'item' variable, see examples #3, #4, #5.
item.style.display = 'none';
// Syntax
.show();
// Example
// Displays all elements with 'my-class'.
$('.my-class').show()
// Syntax
ElementCSSInlineStyle.style.display = '';
// Example
// For declaring the 'item' variable, see examples #3, #4, #5.
item.style.display = ''; // resets default.
item.style.display = 'block'; // sets display as block.
item.style.display = 'flex'; // sets display as flex.
// Syntax
.on();
// Example
// Adds or removes the 'active' class to/from all elements with '.submenu' when #toggle is clicked.
$('#toggle').on('click', function(){
$('.submenu').toggleClass('active');
});
// Syntax
EventTarget.addEventListener('event', functionName);
// Example
// The code below only selects the FIRST element with the 'submenu' class.
// To select all submenus, use the 'for' loop in // Example #3 and #4.
let toggle = document.querySelector("#toggle");
let submenu = document.querySelector(".submenu");
toggle.addEventListener('click', function() {
submenu.classList.toggle('active');
});
// Syntax
.off();
// Example
// Removes the listed event handler when #toggle is clicked.
$('#toggle').off('click', function(){
$('.submenu').toggleClass('active');
});
// Syntax
EventTarget.removeEventListener('event', functionName);
// Example
// The code below only selects the FIRST element with the 'submenu' class.
// To select all submenus, use the 'for' loop in Example #3 and #4.
let toggle = document.querySelector("#toggle");
let submenu = document.querySelector(".submenu");
toggle.removeEventListener('click', function() {
submenu.classList.toggle('active');
});