我正在尝试找出如何编写一个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上有没有一个本机方法可以做到这一点呢?
我是个新手,我真的很感谢你们在回答我的问题时表现出的耐心。
发布于 2018-09-14 07:00:52
您可以在元素上使用.matches()
API,它现在得到了很好的支持:
if (element.matches(".class1.class2")) ...
它就像jQuery .is()
的内置版本。
发布于 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规则,不要修改您不拥有的对象。因此,最好创建一个带有要测试的类列表的元素和数组的命名函数。
发布于 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
https://stackoverflow.com/questions/52322804
复制相似问题