Javascript 是否在元素上使用重复的类名?
我发现有很多框架会在元素上添加新类名之前检查重复的类名,我认为这会降低性能 当元素具有重复的类名时,是否存在任何问题 当使用重复的类名时,它也将毫无冲突地应用CSS类Javascript 是否在元素上使用重复的类名?,javascript,performance,compatibility,classname,Javascript,Performance,Compatibility,Classname,我发现有很多框架会在元素上添加新类名之前检查重复的类名,我认为这会降低性能 当元素具有重复的类名时,是否存在任何问题 当使用重复的类名时,它也将毫无冲突地应用CSS类 <div class="aa bb cc aa"></div> 添加类名是否可以,就像添加elem.className+='+'aa ee',即使元素有重复的类名?重复的类名没有什么“错”,只是多余而已。这可能会对性能产生很小的影响,但只有在有大量重复的情况下,才会产生很大的影响 此外,防止重复只会有
<div class="aa bb cc aa"></div>
添加类名是否可以,就像添加elem.className+='+'aa ee'
,即使元素有重复的类名?重复的类名没有什么“错”,只是多余而已。这可能会对性能产生很小的影响,但只有在有大量重复的情况下,才会产生很大的影响
此外,防止重复只会有助于保持整洁。大量使用属性选择器
像这里
.ui.grid [class*="left floated"].column {
margin-right: auto;
}
.ui.grid [class*="right floated"].column {
margin-left: auto;
}
如果希望
marginleft
和marginright
具有自动值
,则必须有一个浮动的类名段的副本(例如Lorem
)ES6提供了一个方便的API,用于添加、删除和测试DOM元素的类名:classList.add(name)和classList.remove(名称)和classList.contains(名称)
在ES6上下文中,该问题可以重新表述为:
“如果我使用.classList.add()多次添加相同的类名,然后想用classList.remove()删除该类,我是否需要多次调用classList.remove()
幸运的是,答案似乎是对.classList.remove()的一次调用就足以删除给定的类,无论您添加了多少次
我无法通过Google找到一个简单的答案,因此我编写了以下测试来告诉我它是如何工作的。使用DOM元素作为参数调用以下函数不会引发错误:
function testClassListRemove (dem)
{
dem.classList.add ("hello");
dem.classList.add ("hello");
dem.classList.add ("hello");
ok (dem.classList.contains ("hello") );
dem.classList.remove ("hello");
ok (! dem.classList.contains ("hello") );
function ok (b)
{ if (! b)
{ throw new Error ('not ok ');
}
}
}