Я использую простое / минимальное решение, одну строку, кросс-браузер, а также работаю с устаревшими браузерами:
/\bmyClass/.test(document.body.className) // notice the \b command for whole word 'myClass'
Этот метод хорош, потому что не требует полифилов , и если вы используете их для classList
, он намного лучше с точки зрения производительности. По крайней мере, для меня.
Обновление: я сделал крошечный полифилл, это универсальное решение, которым я сейчас пользуюсь:
function hasClass(element,testClass){
if ('classList' in element) { return element.classList.contains(testClass);
} else { return new Regexp(testClass).exec(element.className); } // this is better
//} else { return el.className.indexOf(testClass) != -1; } // this is faster but requires indexOf() polyfill
return false;
}
Другие манипуляции с классами см. В полном файле здесь .