不是为元素可能具有的每个类单独调用$(“#item”).removeClass(),而是可以调用一个函数来从给定元素中删除所有CSS类吗?
jQuery和原始JavaScript都可以工作。
不是为元素可能具有的每个类单独调用$(“#item”).removeClass(),而是可以调用一个函数来从给定元素中删除所有CSS类吗?
jQuery和原始JavaScript都可以工作。
当前回答
$("#item").removeClass();
调用不带参数的removeClass将删除该项的所有类。
您也可以使用(但不一定建议使用。正确的方法是上面的方法):
$("#item").removeAttr('class');
$("#item").attr('class', '');
$('#item')[0].className = '';
如果您没有jQuery,那么这几乎是您唯一的选择:
document.getElementById('item').className = '';
其他回答
当然
$('#item')[0].className = '';
// or
document.getElementById('item').className = '';
由于并非所有版本的jQuery都是相同的,因此您可能会遇到与我相同的问题,这意味着调用$(“#item”).removeClass();实际上并没有删除该类(可能是一个bug)。
更可靠的方法是简单地使用原始JavaScript并完全删除class属性。
document.getElementById("item").removeAttribute("class");
不管你信不信,我喜欢使用原生JavaScript来实现这一点!
解决方案1:className
删除所有项目的所有类别
const items = document.querySelectorAll('item');
for (let i = 0; i < items.length; i++) {
items[i].className = '';
}
仅删除第一项的所有类
const item1 = document.querySelector('item');
item1.className = '';
解决方案2:classList
// remove all class of all items
const items = [...document.querySelectorAll('.item')];
for (const item of items) {
item.classList.value = '';
}
// remove all class of the first item
const items = [...document.querySelectorAll('.item')];
for (const [i, item] of items.entries()) {
if(i === 0) {
item.classList.value = '';
}
}
// or
const item = document.querySelector('.item');
item.classList.value = '';
jQuery方式(不推荐)
$(“#item”).removeClass();$(“#item”).removeClass(“class1…classn”);
refs
https://developer.mozilla.org/en-US/docs/Web/API/Element/className
https://developer.mozilla.org/en-US/docs/Web/API/Element/classList
$('#elm').removeAttr('class');
属性“class”将不再出现在“elm”中。
让我们用这个例子。也许你想让网站的用户知道某个字段是有效的,或者需要通过更改字段的背景色来关注它。如果用户点击重置,那么代码应该只重置包含数据的字段,而不必在页面上的其他字段中循环。
此jQuery筛选器将仅删除“highlightCriteria”类具有此类的输入或选择字段。
$form.find('input,select').filter(function () {
if((!!this.value) && (!!this.name)) {
$("#"+this.id).removeClass("highlightCriteria");
}
});