使用jQuery确定元素是否具有CSS类


173

我正在使用jQuery,以查看是否有一种简单的方法来确定该元素是否具有与之关联的特定CSS类。

我有该元素的ID,以及我要寻找的CSS类。我只需要能够在if语句中根据元素上该类的存在进行比较。


1
如果您要在没有jQuery的情况下使用javascript
Oriol

Answers:


237

使用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')

4
我不同意。该文档按类别进行组织,但是您也可以轻松地按字母顺序查看所有方法。一切都带有示例,注释部分通常会清除所有遗漏的内容。jQuery具有许多出色的功能和实用程序,需要花很多时间才能发现它们。-编辑-这很有道理,肯定已经走了很长一段路。
特拉法马多尼亚人2010年

1
@Trafalmadorian,我已经删除了我最初的评论,因为情况已经改变。最初,您在-EDIT-之前发布了所有内容,而我回答说,关于文档质量的评论不再重要,而是引用了他们以前的(MediaWiki)系统。然后,您删除了先前的注释,并以-EDIT-放置了下来。我希望这次清理工作对将来的读者有一个更清晰,更少误导的认识。
眼睑失明

@daniloquio,如果您直接访问api.jquery.com ...则由于某种原因,该网站仍链接至docs.jquery.com上的糟糕Wiki版本
eyelidlessness 2012年

21

常见问题

elem = $("#elemid");
if (elem.is (".class")) {
   // whatever
}

要么:

elem = $("#elemid");
if (elem.hasClass ("class")) {
   // whatever
}

3
小心。是() - “jQuery中的是()方法将返回true,如果任何当前集合匹配任何的是基于集合的元素的元素” - bennadel.com/blog/...
扎克

11

至于否定,如果您想知道某个元素是否不是一个类,您可以按照Mark所说的那样简单地做。

if (!currentPage.parent().hasClass('home')) { do what you want }

3

没有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+' ')
Blexy 2014年

1
因为indexOfreturns -1是该类不存在。如果我愿意的!!-1true。既然我在做!!-1+1,那将是错误的。更好的方法是...&&!!~(' '+e.className+' ').indexOf(' '+c+' '),但当时我不记得了。
Ismael Miguel

抱歉,我的意思是...&&~(' '+e.className+' ').indexOf(' '+c+' ')
Ismael Miguel



0
 $('.segment-name').click(function () {
    if($(this).hasClass('segment-a')){
        //class exist
    }
});

0

就我而言,我使用了“ 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();
    }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.