我想从具有空类属性的所有元素中删除class属性。
例如:
`<li class="">One</li>`
变为
<li>One</li>
我一直在努力解决这个问题!我得到的最接近的是
var len = $(".splitcolcontainer ul li[class]").val().length;
if (len == 0)
{
$('.splitcolcontainer ul li').removeAttr("class");
}
但没有雪茄。我知道这将是非常简单,但没有任何谷歌搜索给我的光!欢呼声。
编辑:由于人们已经问我为什么要删除它,这里是整个脚本:
$(document).ready(function() {
$( '.splitcolcontainer ol, .splitcolcontainer ul').each(function() {
if($(this).is("ol")) { var ordered = true; }
var colsize = Math.round($(this).find("li").size() / 2);
$(this).find("li").each(function(i) {
if (i>=colsize) {
$(this).addClass('right_col');
}
});
if(ordered) {
$(this).find('.right_col').insertAfter(this).wrapAll("<ol class='splitcol' start='" + (colsize+1) + "'></ol>").removeClass("right_col");
} else {
$(this).find('.right_col').insertAfter(this).wrapAll("<ul class='splitcol'></ul>").removeClass("right_col");
}
});
$('.splitcolcontainer').after('<div class="clear"> </div>');
$('.splitcolcontainer ul, .splitcolcontainer ol').wrap('<div></div>');
});
有一个空类的原因是因为我正在添加类'right_col',然后在以后删除它。我不知道是否会有其他类,所以我需要检查该属性是否为空。感谢您的帮助!
答案 0 :(得分:20)
$('*[class=""]').removeAttr('class');
答案 1 :(得分:3)
我同意,removeClass
留下一个空类属性是很奇怪的。我希望在addClass
之后,removeClass
会将DOM恢复到原始状态。
我最终做的是:
$(this).removeClass("my-class").filter('[class=""]').removeAttr('class');
应该非常高效。
(我的代码用于HTML编辑器,因此生成的代码尽可能干净很重要。)
答案 2 :(得分:1)
在解析文档并创建DOM树之后,元素的属性实际上只是各个DOM对象的属性,因此虽然您可以从源中删除该属性,但它仍然存在(但为空)在DOM中的每个对象上。
答案 3 :(得分:1)
$('li[class=""]').each(function() {
this.removeAttribute('class');
});
答案 4 :(得分:1)
你真的不需要任何库(比如jQuery)这样做:
if (element.className == "")
element.removeAttribute('class');
答案 5 :(得分:0)
添加/删除类是jQuery库的核心功能:http://docs.jquery.com/Attributes
您可以看到任何给定的元素集合是否具有hasClass(http://docs.jquery.com/Attributes/hasClass#class)
的相关类然后使用removeClass(http://docs.jquery.com/Attributes/removeClass#class)
删除特定的类因此,如果您需要从特定元素中删除类“abc”,请执行以下操作:
$("#element").removeClass("abc");
这将删除指定的类,即使其中有其他类。添加类的工作方式相同。
答案 6 :(得分:0)
class
属性中的空格:
var nodesWithClass = document.querySelectorAll("[class]");
[...nodesWithClass].forEach(node => {
if( !node.className.trim() )
node.removeAttribute('class');
})
console.log( document.body.children );
&#13;
<a class="">one</a>
<a class=' '>two</a>
<a class=' '>three</a>
&#13;
当然这是一个非常概括的场景,应该考虑一些事情,比如使用querySelectorAll
,这可能更具体,然后在整个文档中搜索带有类的节点。其次是使用ES2015技巧将nodesWithClass
HTMLCollection转换为数组(请参阅this question)。