用jQuery确定一个元素是否有一个CSS类
我正在使用jQuery,并查看是否有一个简单的方法来确定元素是否有一个特定的CSS类与它关联。
我有元素的id,以及我正在寻找的CSS类。 我只需要能够在if语句中根据元素上该类的存在进行比较。
使用hasClass
方法:
jQueryCollection.hasClass(className);
要么
$(selector).hasClass(className);
参数(显然)是一个表示正在检查的类的string,它返回一个布尔值(所以它不像大多数jQuery方法那样支持链接)。
注意:如果传递一个包含空白的className
参数,它将与字面上的集合元素的className
string相匹配。 所以,如果你有一个元素,
<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 }
至于否定,如果你想知道一个元素是否没有一个类,你可以简单地做,如马克所说。
if (!currentPage.parent().hasClass('home')) { do what you want }
没有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更快!
检查官方的jQuery FAQ页面:
我如何testing一个元素是否具有相关类
$('.segment-name').click(function () { if($(this).hasClass('segment-a')){ //class exist } });
在我的情况下,我使用的是一个jQuery函数,我有一个HTML元素与不同的css类添加,我正在寻找一个特定的类在这些,所以我用“是”一个很好的替代检查一个类dynamic添加到一个HTML元素,它已经有其他的CSS类,这是另一个不错的select。
简单的例子:
<!--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(); }
为了帮助任何人在这里登陆,但实际上正在寻找一个jQuery免费的方式来做到这一点:
element.classList.contains('your-class-name')