2008-11-04 33 views
172

我正在使用jQuery并查看是否有简单的方法来确定元素是否具有与其关联的特定CSS类。确定元素是否具有jQuery的CSS类

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

+0

如果你想没有jQuery,[“hasClass”与JavaScript?](http://stackoverflow.com/q/5085567/1529630) – Oriol 2016-06-12 17:23:54

回答

238

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

没错。文档在这里:http://docs.jquery.com/Traversing/hasClass – 2008-11-04 20:14:23

+4

我不同意。文档按类别组织,但您也可以按字母顺序轻松查看所有方法。每件事都有一个例子,评论部分通常会清除任何被遗漏的东西。 jQuery有很多优秀的功能和实用程序,需要一些学习来发现它们。 -EDIT-这很有道理,这绝对是一个很长的路要走。 – Trafalmadorian 2010-05-20 05:19:54

+1

@Trafalmadorian,我已经删除了我原来的评论,因为情况已经改变。最初您在-EDIT之前发布了所有内容,并且我回复说我对文档质量的评论不再相关,而是提及他们以前的(MediaWiki)系统。然后,您删除了以前的评论并放置了-EDIT-。我希望这个清理工作对未来的读者来说更清楚一点,不会让人误解。 – eyelidlessness 2010-05-20 18:05:01

20
FAQ

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

或:

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

至于否定,如果你想知道,如果一个元素有没有一个类,你可以简单地做马克说。

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的!

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

在我的情况,我用了“是”一个jQuery的功能,我有加,我一直在寻找的这些中间一个特定的类不同的CSS类的一个HTML元素,所以我用了“是一个很好的替代方法来检查一个动态添加到一个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(); 
    } 
0

在帮助人谁在这里的土地,但实际上是在寻找这样做的jQuery的免费方式的利益:

element.classList.contains('your-class-name') 
相关问题