Answers:
使用hasClass
方法:
jQueryCollection.hasClass(className);
要么
$(selector).hasClass(className);
该参数(显然)是一个字符串,代表您正在检查的类,并且它返回一个布尔值(因此它不像大多数jQuery方法一样支持链接)。
注意:如果传递className
包含空格的参数,则它将与集合的元素的className
字符串进行字面匹配。因此,例如,如果您有一个元素,
<span class="foo bar" />
然后这将返回true
:
$('span').hasClass('foo bar')
这些将返回false
:
$('span').hasClass('bar foo')
$('span').hasClass('foo bar')
从常见问题
elem = $("#elemid");
if (elem.is (".class")) {
// whatever
}
要么:
elem = $("#elemid");
if (elem.hasClass ("class")) {
// whatever
}
没有jQuery:
var hasclass=!!(' '+elem.className+' ').indexOf(' check_class ')+1;
要么:
function hasClass(e,c){
return e&&(e instanceof HTMLElement)&&!!((' '+e.className+' ').indexOf(' '+c+' ')+1);
}
/*example of usage*/
var has_class_medium=hasClass(document.getElementsByTagName('input')[0],'medium');
这比jQuery快!
...&&!!((' '+e.classname+' ').indexOf(' '+c+' ')+1)
,而不仅仅是&&!(' '+e.classname+' ').indexOf(' '+c+' ')
?
indexOf
returns -1
是该类不存在。如果我愿意的!!-1
话true
。既然我在做!!-1+1
,那将是错误的。更好的方法是...&&!!~(' '+e.className+' ').indexOf(' '+c+' ')
,但当时我不记得了。
...&&~(' '+e.className+' ').indexOf(' '+c+' ')
为了帮助落在这里但实际上正在寻找jQuery免费方法的人:
element.classList.contains('your-class-name')
检查官方jQuery FAQ页面:
就我而言,我使用了“ is”一个jQuery函数,添加了一个HTML元素,并添加了不同的css类,在这些中间寻找了一个特定的类,因此我使用了“ is”作为检查的好方法动态添加到html元素中的类(该类已经具有其他CSS类),这是另一个不错的选择。
简单的例子:
<!--element html-->
<nav class="cbp-spmenu cbp-spmenu-horizontal cbp-spmenu-bottom cbp-spmenu-open" id="menu">somethings here... </nav>
<!--jQuery "is"-->
$('#menu').is('.cbp-spmenu-open');
高级示例:
<!--element html-->
<nav class="cbp-spmenu cbp-spmenu-horizontal cbp-spmenu-bottom cbp-spmenu-open" id="menu">somethings here... </nav>
<!--jQuery "is"-->
if($('#menu').is('.cbp-spmenu-bottom.cbp-spmenu-open')){
$("#menu").show();
}