Я хочу проверить имя класса с помощью JS. Но поскольку элемент имеет несколько классов, используемая команда не работает. Как я могу проверить один класс?
HTML
<div class="first_class second_class third_class"> </div>
JS
var trg = e.target;
if ( trg.classList.contains('third_class') ) {
console.log(trg);
}
contains
- это метод подчеркивания - метод native array, который он использует, - indexOf
однако ни один из них не будет работать, потому что объект, возвращаемый classList
, не является реальным массивом, поэтому мы должны применить его к методу indexOf
массива:
if ( Array.prototype.indexOf.call( trg.classList, 'third_class' ) > -1 ) {
console.log(trg);
}
Если вы используете подчеркивание:
if ( _.toArray( trg.classList ).contains( 'third_class' ) ) {
console.log(trg);
}
В jQuery:
$( "#mydiv" ).hasClass( "foo" )
classList в настоящее время недоступен.
Используйте либо классName.indexOf, либо className.split(...) или получите полис заполнение класса: https://github.com/remy/polyfills
Если вы хотите остаться с чистым Javascript и избегать сторонних библиотек
var trg = e.target;
if (trg.className.split(' ').indexOf('third_class') > -1) {
console.log(trg);
}
Если вы используете indexOf
в строке напрямую, вы можете получить ложные срабатывания (например, если вы ищете "foo", и у вас есть класс "глупый", вы получите ложный результат).
Помните, что Internet Explorer <9 не поддерживает indexOf
. Если вам необходимо его поддерживать, используйте полиполк или метод из сторонней библиотеки, такой как jQuery.
classList
className
(что могло бы решить эту проблему), при использовании classList
вместо className
, поскольку он уже знает, что представляют собой отдельные классы.