Remove All Elements with a Class Using JavaScript

Introduction

In this Byte we'll be looking at a common operation in frontend JavaScript - removing all elements with a specific class. A task like this may come up when manipulating the DOM, especially when working with a dynamic web app.

The DOM and Class Selectors

In rendered HTML, the DOM represents the structure of web content. It's an object-oriented representation of a web page, which can be manipulated with JavaScript to change the document structure, style, and content. Class selectors play an important role in both reading and manipulating the DOM.

A class selector is a name assigned to an HTML element using the class attribute. This can help us to target and manipulate specific groups of elements with JavaScript or CSS. For instance, if you have a group of elements with the class highlight, you can target them with JavaScript like so:

let highlights = document.getElementsByClassName('highlight');

This returns a "live" HTMLCollection of elements with the class highlight. It's "live" because it automatically updates when the document changes.

Why Remove Elements with a Specific Class

There are many scenarios where this operation is useful.

Perhaps you're building a dynamic web page where elements are frequently added and removed. For instance, a notification system might use a specific class for error messages. When the errors are resolved, it would make sense to remove all these messages at once.

Another use case could be a form validation system. Invalid form fields could be marked with a specific class, and once the form is validated, these markers could be removed with a single command.

Removing Elements with Specific Class

Now, let's get to what this Byte is really about — removing elements with a specific class. Here's a simple function that does just that:

function removeElementsByClass(className) {
    let elements = document.getElementsByClassName(className);
    while(elements.length > 0) {
        elements[0].parentNode.removeChild(elements[0]);
    }
}

This function works by first selecting all elements with the specified class. It then enters a loop that continues as long as there are elements with this class. Inside the loop, it removes the first element in the collection.

Remember, getElementsByClassName returns a live collection, so removing an element automatically updates the collection. This is why we can always remove the first element without running out of bounds.

Get free courses, guided projects, and more

No spam ever. Unsubscribe anytime. Read our Privacy Policy.

To use the function, you simply call it with the class name as parameter:

removeElementsByClass('highlight');

After this line of code, all elements with the class highlight will have been removed from the document.

Note: Interestingly, removing an element from the DOM does not delete it entirely. It's removed from the document structure, but still exists in memory and can be reinserted into the document.

Remove Elements by Class Name with jQuery

Given its popularity, many of you reading this are likely also using jQuery in your site. Of course, as you'll see, jQuery can make operations like this even simpler.

Here is how you can remove all elements by class name using jQuery:

$('.highlight').remove();

In this example, we want to remove all elements with the "highlight" class. However, you should insert whatever class it is that you need to remove.

Comparing this to the "plain JavaScript" way, it's much shorter, much easier to read, and much less error-prone. While many prefer to use plain JS for their projects, it can be hard to pass up on the convenience of a library like jQuery.

Conclusion

JavaScript offers a powerful set of tools for manipulating the DOM, and understanding these tools can greatly enhance your ability to create dynamic web pages. In this Byte we saw how to select elements by class name and how to remove those elements. We saw how to do this with both plain old JavaScript as well as with jQuery.

Last Updated: September 18th, 2023
Was this helpful?

© 2013-2024 Stack Abuse. All rights reserved.

AboutDisclosurePrivacyTerms