frenchie
frenchie

Reputation: 51937

How to get all CSS classes of an element?

I have an element with multiple classes and I'd like to get its css classes in an array. How would I do this? Something like this:

var classList = $(this).allTheClasses();

Upvotes: 52

Views: 84230

Answers (6)

Balaji
Balaji

Reputation: 10887

element.classList.value

console.log("class")
console.log(document.getElementById('c2').classList.value)
<div id="c2" class="class1 class2"> i am two class</div>

getAttribute

    console.log("class")
    console.log(document.getElementById('c2').getAttribute('class'))
    <div id="c2" class="class1 class2"> i am two class</div>

className

   console.log("class")
        console.log(document.getElementById('c2').className)
        <div id="c2" class="class1 class2"> i am two class</div>

to make an array choose any one of above method

string.split(' ');

Upvotes: 1

J&#233;r&#244;me Beau
J&#233;r&#244;me Beau

Reputation: 11450

Note that you can also use myElement.classList as a simple array-like object:

const classList = myElement.classList;

This is supported by all major browsers for a while now, apart IE 9 and below.

Upvotes: 27

ethannguyens
ethannguyens

Reputation: 66

function showClasses() {
  const div = document.querySelector('div');
  const classes = div.className.split(' ');

  const p = document.querySelector('p');
  p.innerHTML = classes;
}
<div class="foo bar">This div has foo, bar classes</div>
<p class='output'>Above div classes appear here</p>
<button onClick="showClasses();">Show div classes</button>

HTML

<div class="foo bar">This div has foo, bar classes</div>

Vanilla JavaScript. It will return an array of classes.

const div = document.querySelector('div');
const classes = div.className.split(" "); // ['foo', 'bar']

Upvotes: 1

hardevine
hardevine

Reputation: 39

Check this out:

var classes = $('selector').prop('classList');

Upvotes: 2

mas-designs
mas-designs

Reputation: 7536

This should do the work for you:

var classes = $('div').attr('class').split(" ");

This would be the jQuery solution for other solutions there are other answers !

Upvotes: 9

ThiefMaster
ThiefMaster

Reputation: 318508

No need to use jQuery for it:

var classList = this.className.split(' ')

If you for some reason want to do it from a jQuery object, those two solutions work, too:

var classList = $(this)[0].className.split(' ')
var classList = $(this).prop('className').split(' ')

Of course you could switch to overkill development mode and write a jQuery plugin for it:

$.fn.allTheClasses = function() {
    return this[0].className.split(' ');
}

Then $(this).allTheClasses() would give you an array containing the class names.

Upvotes: 88

Related Questions