首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用vanilla JS检查一个元素是否有多个类

如何使用vanilla JS检查一个元素是否有多个类
EN

Stack Overflow用户
提问于 2018-09-14 06:57:54
回答 3查看 6K关注 0票数 6

我正在尝试找出如何编写一个if语句,其工作原理如下:

if (element contains class 1 && class 2) {
   // do this
}

如何编写if语句来检查多个类?

有没有办法让.contains方法检查多个类?

到目前为止我发现的:

How to check class of multiple class elements in javascript, without jquery

问题是,它似乎返回了元素包含的所有类的数组,这不是我想要的。我需要这个函数来检查元素是否包含我提供给它的类。

在我看来,其中一个解决方案是要求我们创建自己的函数来做这件事,但是JS上有没有一个本机方法可以做到这一点呢?

我是个新手,我真的很感谢你们在回答我的问题时表现出的耐心。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-09-14 07:00:52

您可以在元素上使用.matches() API,它现在得到了很好的支持:

if (element.matches(".class1.class2")) ...

它就像jQuery .is()的内置版本。

Documentation link.

票数 11
EN

Stack Overflow用户

发布于 2018-09-14 07:03:59

将要测试的类名放入数组中,然后使用Array.prototype.every()检查元素的classList中是否存在数组的所有成员

console.log(['a', 'b'].every(e=>div.classList.contains(e)))
console.log(['a', 'b', 'c'].every(e=>div.classList.contains(e)))
<div class="a b" id="div"></div>

不幸的是,Element.classList是只读的,因此您不能向其原型添加任何内容。但是,您可以在Array.prototype上执行此操作

Array.prototype.contains = function(...args) { 
  return [...args].every(c=>this.includes(c))
}

console.log([...div.classList].contains('a', 'b'))
console.log([...div.classList].contains('a', 'c'))
console.log([...div.classList].contains('a', 'c.d'))
<div class="a b c.d" id="div"></div>

重要提示:请注意,这违反了基本的OOP规则,不要修改您不拥有的对象。因此,最好创建一个带有要测试的类列表的元素和数组的命名函数。

票数 3
EN

Stack Overflow用户

发布于 2018-09-14 07:06:14

浏览器有一个本机API,让您可以使用DOM。并不总是需要jQuery。https://www.w3schools.com/jsref/prop_element_classlist.asp

您可以使用“classList.contains”方法

document.getElementById({id}).classList.contains({class}) -- returns true or flase
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52322804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档