如何做jQuery的hasClass与平原ol ' JavaScript?例如,
<body class="foo thatClass bar">
JavaScript中询问<body>是否有thatClass的方法是什么?
如何做jQuery的hasClass与平原ol ' JavaScript?例如,
<body class="foo thatClass bar">
JavaScript中询问<body>是否有thatClass的方法是什么?
当前回答
可以使用以下语句:
Array.prototype.indexOf.call(myHTMLSelector.classList, 'the-class');
其他回答
这个'hasClass'函数适用于IE8+, FireFox和Chrome:
hasClass = function(el, cls) {
var regexp = new RegExp('(\\s|^)' + cls + '(\\s|$)'),
target = (typeof el.className === 'undefined') ? window.event.srcElement : el;
return target.className.match(regexp);
}
[更新于2021年1月]更好的方法:
hasClass = (el, cls) => {
[...el.classList].includes(cls); //cls without dot
};
只需使用classList.contains():
if (document.body.classList.contains('thatClass')) {
// do some stuff
}
classList的其他用途:
document.body.classList.add('thisClass');
// $('body').addClass('thisClass');
document.body.classList.remove('thatClass');
// $('body').removeClass('thatClass');
document.body.classList.toggle('anotherClass');
// $('body').toggleClass('anotherClass');
浏览器支持:
Chrome 8.0 Firefox 3.6 IE 10 Opera 11.50 Safari 5.1
浏览器支持
可以使用以下语句:
Array.prototype.indexOf.call(myHTMLSelector.classList, 'the-class');
其中最有效的一句话就是
返回一个布尔值(与Orbling的答案相反) 在具有class="thisClass-suffix"的元素上搜索thisClass时,不会返回假阳性。 能兼容IE6以下的所有浏览器吗
function hasClass( target, className ) {
return new RegExp('(\\s|^)' + className + '(\\s|$)').test(target.className);
}
/ / 1。使用if来查看这些类: if (document.querySelector(".section-name").classList.contains("section-filter")) { 警报(“网格部分”); / /代码… } < !——2。在.html:——>中添加一个类 <div class="section-name section-filter">