【发布时间】:2010-11-28 08:10:11
【问题描述】:
不是为元素可能拥有的每个类单独调用$("#item").removeClass(),是否有一个可以调用的函数从给定元素中删除所有CSS类?
jQuery 和原始 JavaScript 都可以工作。
【问题讨论】:
标签: javascript jquery dom
不是为元素可能拥有的每个类单独调用$("#item").removeClass(),是否有一个可以调用的函数从给定元素中删除所有CSS类?
jQuery 和原始 JavaScript 都可以工作。
【问题讨论】:
标签: javascript jquery dom
$("#item").removeClass();
不带参数调用removeClass 将删除所有项目的类。
也可以使用(但不一定推荐。正确的方式就是上面那个):
$("#item").removeAttr('class');
$("#item").attr('class', '');
$('#item')[0].className = '';
如果您没有 jQuery,那么这几乎是您唯一的选择:
document.getElementById('item').className = '';
【讨论】:
attr()的版本不应该是prop()吗?
If a class name is included as a parameter, then only that class will be removed from the set of matched elements. If no class names are specified in the parameter, all classes will be removed.api.jquery.com/removeclass
等一下,如果没有指定任何具体内容,removeClass() 是否默认删除所有类?所以
$("#item").removeClass();
会自己做...
【讨论】:
只需将真实 DOM 元素的className 属性设置为''(无)。
$('#item')[0].className = ''; // the real DOM element is at [0]
其他人说只调用removeClass 就可以了——我用Google jQuery Playground 测试了这个:http://savedbythegoog.appspot.com/?id=ag5zYXZlZGJ5dGhlZ29vZ3ISCxIJU2F2ZWRDb2RlGIS61gEM ...并且它可以工作。所以你也可以这样做:
$("#item").removeClass();
【讨论】:
当然。
$('#item')[0].className = '';
// or
document.getElementById('item').className = '';
【讨论】:
删除特定类:
$('.class').removeClass('class');
如果元素有 class="class another-class"。
【讨论】:
最短的方法
$('#item').removeAttr('class').attr('class', '');
【讨论】:
你可以试试:
$(document).ready(function() {
$('body').find('#item').removeClass();
});
如果您必须在没有类名的情况下访问该元素,例如您必须添加一个新的类名,您可以这样做:
$(document).ready(function() {
$('body').find('#item').removeClass().addClass('class-name');
});
我在我的项目中使用该函数在 HTML 构建器中删除和添加类。
【讨论】:
$('#elm').removeAttr('class');
属性“class”将不再出现在“elm”中。
【讨论】:
removeClass(); 对我不起作用。
// Remove all items all class
const items = document.querySelectorAll('item');
for (let i = 0; i < items.length; i++) {
items[i].className = '';
}
// Only remove all class of first item
const item1 = document.querySelector('item');
item1.className = '';
$("#item").removeClass();
$("#item").removeClass("class1 ... classn");
【讨论】:
由于不是所有版本的 jQuery 都是一样的,你可能会遇到我遇到的同样的问题,这意味着调用 $("#item").removeClass();实际上并没有删除该类(可能是一个错误)。
更可靠的方法是简单地使用原始 JavaScript 并完全删除 class 属性。
document.getElementById("item").removeAttribute("class");
【讨论】:
让我们使用这个例子。也许您希望您网站的用户知道某个字段是有效的,或者需要通过更改字段的背景颜色来引起注意。如果用户点击重置,那么您的代码应该只重置具有数据的字段,而不必费心循环浏览页面上的所有其他字段。
这个 jQuery 过滤器将只删除类“highlightCriteria” 具有此类的输入或选择字段。
$form.find('input,select').filter(function () {
if((!!this.value) && (!!this.name)) {
$("#"+this.id).removeClass("highlightCriteria");
}
});
【讨论】:
试试removeClass。
例如:
var nameClass=document.getElementsByClassName("clase1");
console.log("after", nameClass[0]);
$(".clase1").removeClass();
var nameClass=document.getElementsByClassName("clase1");
console.log("before", nameClass[0]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="clase1">I am a Div with class="clase1"</div>
【讨论】:
我遇到了类似的问题。在我的情况下,在禁用元素上应用了 aspNetDisabled 类,并且所有禁用的控件都有错误的颜色。所以,我使用 jQuery 删除了我想要的每个元素/控件上的这个类,现在一切正常并且看起来很棒。
这是我删除 aspNetDisabled 类的代码:
$(document).ready(function () {
$("span").removeClass("aspNetDisabled");
$("select").removeClass("aspNetDisabled");
$("input").removeClass("aspNetDisabled");
});
【讨论】: