到目前为止,我必须这样做:
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");
我想知道是否有任何本地的方法来添加或删除。
当前回答
另一个元素填充。classList在这里。我是通过MDN找到的。
我包括该脚本,并使用element.classList.add(“第一”,“第二”,“第三”),因为它的意图。
其他回答
elem.classList.add("first");
elem.classList.add("second");
elem.classList.add("third");
是相等的
elem.classList.add("first","second","third");
向元素中添加类
document.querySelector(elem).className+=' first second third';
更新:
删除一个类
document.querySelector(elem).className=document.querySelector(elem).className.split(class_to_be_removed).join(" ");
新的展开操作符使应用多个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);
}
})
我发现了一个非常简单的方法,更现代和优雅的方式。
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的类数组。