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

IT技术 javascript jquery css
2021-01-13 01:58:45

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

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

6个回答

使用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')
我不同意。文档按类别进行组织,但您也可以轻松地按字母顺序查看所有方法。一切都带有示例,评论部分通常会清除遗漏的任何内容。jQuery 有很多优秀的函数和实用程序,需要一些学习才能发现它们。-编辑-这是有道理的,它肯定走了很长一段路。
2021-04-01 01:58:45
@daniloquio,如果你直接访问 api.jquery.com ......出于某种原因,该网站仍然链接到 docs.jquery.com 上糟糕的 wiki 版本
2021-04-07 01:58:45
@Trafalmadorian,我删除了我原来的评论,因为情况发生了变化。最初您在 -EDIT- 之前发布了所有内容,我回答说我对文档质量的评论不再相关,而是参考了他们以前的 (MediaWiki) 系统。然后,您删除了之前的评论并使用 -EDIT- 进行了处理。我希望这次清理对未来的读者更清晰,更少误导。
2021-04-13 01:58:45

常见问题

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

或者:

elem = $("#elemid");
if (elem.hasClass ("class")) {
   // whatever
}
小心 .is() - “如果当前集合中的任何元素与基于 is 的集合中的任何元素匹配,jQuery 中的 is() 方法将返回 true” - benndel.com/blog/...
2021-03-22 01:58:45

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

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快得多!

对不起,我的意思是 ...&&~(' '+e.className+' ').indexOf(' '+c+' ')
2021-03-25 01:58:45
因为indexOf返回的-1是该类不存在。如果我这样做!!-1,那就是true既然我在做!!-1+1,那就是假的。更好的方法是...&&!!~(' '+e.className+' ').indexOf(' '+c+' '),但我当时不记得了。
2021-03-26 01:58:45
你为什么这样做...&&!!((' '+e.classname+' ').indexOf(' '+c+' ')+1),而不仅仅是&&!(' '+e.classname+' ').indexOf(' '+c+' ')
2021-04-08 01:58:45

为了帮助任何人来到这里但实际上正在寻找一种 jQuery 免费的方式来做到这一点:

element.classList.contains('your-class-name')