2017-02-16 4 views

ответ

2

Есть polyfills, но если вы не хотите использовать один : поскольку className является разделенными пробелами списка классов, вы могли бы использовать регулярное выражение:

return /(?:^|\s)myClass(?:$|\s)/.test(document.body.className); 

(к сожалению, мы не можем просто использовать \b [границы слова], так как - квалифицируется в качестве границы слова, но не является разделителем в списке классов.)

0

Альтернатива:

const hasClass = ($element, className) => { 
 
    const match = new RegExp(`(^|\\s)${className}(\\s|$)`).test($element.className); 
 
    return $element.className && match; 
 
}; 
 

 
const $el = document.querySelector('.foo'); 
 

 
alert(hasClass($el, 'foo'));
.foo { 
 
    background: tomato; 
 
}
<div class="foo">Foobar</div>

-1

Опираясь на предыдущие ответы, если вы не хотите иметь дело с вшивый песчаный регулярных выражений самостоятельно, вы можете импортировать и JQuery используйте вместо этого метод jQuery .hasClass().

return $(document.body).hasClass("myClass"); 

jQuery обрабатывает кросс-браузерную поддержку.

+0

Итак, я могу узнать в следующий раз, почему нижний предел? Я уверен, что метод jQuery .hasClass делает то, что хочет OP –

Смежные вопросы