到目前为止,我必须这样做:
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");
我想知道是否有任何本地的方法来添加或删除。
当前回答
elem.classList.add("first");
elem.classList.add("second");
elem.classList.add("third");
是相等的
elem.classList.add("first","second","third");
其他回答
在字符串中添加由空格分隔的多个类的更好方法是使用带有split的Spread_syntax:
element.classList.add(...classesStr.split(" "));
我发现了一个非常简单的方法,更现代和优雅的方式。
const el = document.querySelector('.m-element');
// To toggle
['class1', 'class2'].map((e) => el.classList.toggle(e));
// To add
['class1', 'class2'].map((e) => el.classList.add(e));
// To remove
['class1', 'class2'].map((e) => el.classList.remove(e));
好在你可以很容易地扩展类数组或使用任何来自API的类数组。
假设你有一个要添加的类数组,你可以使用ES6扩展语法:
Let classes = ['first', 'second', 'third']; elem.classList.add(…类);
由于classList中的add()方法只允许传递单独的参数而不是单个数组,因此需要使用apply调用add()。对于第一个参数,你需要从相同的DOM节点传递classList引用,作为第二个参数,你想添加的类数组:
element.classList.add.apply(
element.classList,
['class-0', 'class-1', 'class-2']
);
你可以像下面这样做
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);
}
})