2012-02-14 2 views
22

У меня есть элемент с несколькими классами, и я бы хотел получить его классы css в массиве. Как мне это сделать? Что-то вроде этого:Как получить все классы CSS элемента?

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

возможно дубликат [Получить список классов для элемента с JQuery] (http://stackoverflow.com/questions/1227286/get-class-list-for-element-with-jquery) –

+0

дублирует результаты различных поисковых запросов. Некоторые люди будут google «Получить список классов для элемента», а другие будут google «получение классов css элемента». Я сделал последнее, а другие тоже. – frenchie

ответ

41

Нет необходимости использовать JQuery для него:

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

Если вы по какой-то причине хотите сделать это из объекта JQuery, эти два решения работают, тоже:

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

конечно, вы могли бы перейти в режим разработки и излишним написать плагин JQuery для него:

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

Тогда $(this).allTheClasses() предоставит вам массив, содержащий имена классов.

+0

ОК, причина, по которой я думаю, что мне нужно сделать это в jquery, заключается в том, что я передаю объект jquery как параметр функции и использую следующий код: var classList = TheObject.prop ('className'). Split (''); Оно работает; это лучший способ сделать это? – frenchie

+0

Да, это лучший способ. Плагин будет приятнее, если вы используете его в нескольких местах вашего кода. – ThiefMaster

+0

ОК, спасибо за код. Я вернусь к идее плагина, если мне нужно будет использовать это в нескольких местах. – frenchie

6

Это должно сделать работу для вас:

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

Это будет решение JQuery для других решений существуют и другие ответы!

7

Обратите внимание, что вы также можете использовать myElement.classList как простой массив. This is supported by all major browsers for a while now, apart IE 9 and below.

+0

На самом деле classList - это не массив, а [список токенов] (https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList), поэтому имейте в виду, что с ним нельзя использовать методы массива сразу. – Esko

0

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. Он вернет массив классов.

const div = document.querySelector('div'); 
const classes = div.className.split(" "); // ['foo', 'bar'] 
Смежные вопросы