У меня есть элемент с несколькими классами, и я бы хотел получить его классы css в массиве. Как мне это сделать? Что-то вроде этого:Как получить все классы CSS элемента?
var classList = $(this).allTheClasses();
У меня есть элемент с несколькими классами, и я бы хотел получить его классы css в массиве. Как мне это сделать? Что-то вроде этого:Как получить все классы CSS элемента?
var classList = $(this).allTheClasses();
Нет необходимости использовать 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()
предоставит вам массив, содержащий имена классов.
ОК, причина, по которой я думаю, что мне нужно сделать это в jquery, заключается в том, что я передаю объект jquery как параметр функции и использую следующий код: var classList = TheObject.prop ('className'). Split (''); Оно работает; это лучший способ сделать это? – frenchie
Да, это лучший способ. Плагин будет приятнее, если вы используете его в нескольких местах вашего кода. – ThiefMaster
ОК, спасибо за код. Я вернусь к идее плагина, если мне нужно будет использовать это в нескольких местах. – frenchie
Это должно сделать работу для вас:
var classes = $('div').attr('class').split(" ");
Это будет решение JQuery для других решений существуют и другие ответы!
Проверьте это:
var classes = $('selector').prop('classList');
Обратите внимание, что вы также можете использовать myElement.classList
как простой массив. This is supported by all major browsers for a while now, apart IE 9 and below.
На самом деле classList - это не массив, а [список токенов] (https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList), поэтому имейте в виду, что с ним нельзя использовать методы массива сразу. – Esko
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']
возможно дубликат [Получить список классов для элемента с JQuery] (http://stackoverflow.com/questions/1227286/get-class-list-for-element-with-jquery) –
дублирует результаты различных поисковых запросов. Некоторые люди будут google «Получить список классов для элемента», а другие будут google «получение классов css элемента». Я сделал последнее, а другие тоже. – frenchie