IE9 no es compatible con la propiedad classList, de todos modos está alrededor de esta línea de JavaScript para que funcione en IE9

this.wrap.classList.add("myClass") 
0
Bob123 16 feb. 2017 a las 19:34

3 respuestas

La mejor respuesta

Hay polyfills, pero si no desea usar uno: dado que className es una lista de clases separadas por espacios, puede usar una expresión regular:

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

(Lamentablemente, no podemos usar \b [límite de palabras] ya que - califica como un límite de palabras, pero no es un separador en la lista de clases).

2
T.J. Crowder 16 feb. 2017 a las 16:37

Sobre la base de las respuestas anteriores, si no desea tener que lidiar con el meollo de las expresiones regulares usted mismo, puede importar jQuery y utilizar el método .hasClass() de jQuery.

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

JQuery se ocupa de la compatibilidad con el navegador cruzado.

-1
Ananth Rao 16 feb. 2017 a las 16:41

Una alternativa:

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>
0
jdlm 16 feb. 2017 a las 16:40