到目前为止,我必须这样做:
elem.classList.add("first");
elem.classList.add("second");
elem.classList.add("third");
这在jQuery中是可以实现的,就像这样
$(elem).addClass("first second third");
我想知道是否有任何本地的方法来添加或删除。
到目前为止,我必须这样做:
elem.classList.add("first");
elem.classList.add("second");
elem.classList.add("third");
这在jQuery中是可以实现的,就像这样
$(elem).addClass("first second third");
我想知道是否有任何本地的方法来添加或删除。
当前回答
新的展开操作符使应用多个CSS类作为数组更加容易:
const list = ['first', 'second', 'third'];
element.classList.add(...list);
其他回答
你可以像下面这样做
Add
elem.classList.add("first", "second", "third");
// OR
elem.classList.add(...["first","second","third"]);
删除
elem.classList.remove("first", "second", "third");
// OR
elem.classList.remove(...["first","second","third"]);
参考
TLDR;
在上述直接的情况下,拆卸应该工作。但是在删除的情况下,应该在删除它们之前确保类存在
const classes = ["first","second","third"];
classes.forEach(c => {
if (elem.classList.contains(c)) {
element.classList.remove(c);
}
})
elem.classList.add("first");
elem.classList.add("second");
elem.classList.add("third");
是相等的
elem.classList.add("first","second","third");
一个非常简单,不花哨,但有效的解决方案,我不得不相信是非常跨浏览器的:
创建这个函数
函数removeAddClasses(班级名册,removeCollection addCollection) { for (var i=0;i< removeccollection .length;i++){ classList.remove (removeCollection[我]); } for (var i=0;i<addCollection.length;i++){ classList.add (addCollection[我]); } }
这样叫它: removeAddClasses (node.classList arrayToRemove arrayToAdd);
...其中arrayToRemove是要删除的类名数组: (“myClass1”、“myClass2”)等等
...and arrayToAdd是一个要添加的类名数组: (“myClass3”、“myClass4”)等等
另一个元素填充。classList在这里。我是通过MDN找到的。
我包括该脚本,并使用element.classList.add(“第一”,“第二”,“第三”),因为它的意图。
由于classList中的add()方法只允许传递单独的参数而不是单个数组,因此需要使用apply调用add()。对于第一个参数,你需要从相同的DOM节点传递classList引用,作为第二个参数,你想添加的类数组:
element.classList.add.apply(
element.classList,
['class-0', 'class-1', 'class-2']
);