Javascript 在一个元素上添加两次相同的类

Javascript 在一个元素上添加两次相同的类,javascript,jquery,html,css,class,Javascript,Jquery,Html,Css,Class,最近,我正在为我的工作对一个遗留项目进行重构,我偶然发现了一些“bug” 在框架内的某个地方,一个自定义页面加载器从端点读取控制器/动作,并将其作为两个类应用于主体 我们可以这样说: $('body').removeAttr("class").addClass(controller + ' ' + action); <body class="cars cars"> 使用索引作为控制器和汽车作为动作,车身看起来会像: $('body').removeAttr("class").ad

最近,我正在为我的工作对一个遗留项目进行重构,我偶然发现了一些“bug”

在框架内的某个地方,一个自定义页面加载器从端点读取
控制器/动作
,并将其作为两个类应用于主体

我们可以这样说:

$('body').removeAttr("class").addClass(controller + ' ' + action);
<body class="cars cars">
使用
索引
作为控制器和
汽车
作为动作,车身看起来会像:

$('body').removeAttr("class").addClass('index cars');
<body class="index cars">
现在,如果操作和控制器具有相同的名称,则会出现问题。 应用这两个类,假设
cars/cars
看起来是这样的:

$('body').removeAttr("class").addClass(controller + ' ' + action);
<body class="cars cars">
不起作用:-(

在谷歌和这里搜索了一下,但没有找到什么

问题是:


在一个元素上有两个相同的类是否有效?如果是,那么除了用类创建选择器之外,还有没有其他人这样做的具体原因?

一个元素有多个重复的类是有效的。请查看此处的Moz Developer参考:

基本上,无论调用它的是什么,都会识别同一元素的两个实例,但会将其视为一个类

回答你的第二个问题,关于某人利用这个的原因…我个人想不出一个

对于上面的问题,您正在删除元素上的属性“class”,然后使用class值将其添加回。例如:
变为
,然后变为

您可以使用
.removeClass
替换
.removeAttr

请看这里:


希望能有帮助?祝你好运!

为什么不在添加类之前添加一个验证(controller+''+action);来检查名称是否相同,然后再添加它们。谢谢@emmanuel。我知道解决这个问题的方法,但我只是在徘徊……非常感谢@LcSalazar(感觉有点愚蠢的atm):-)。所以可能是jQuery的事情。。。我标记为复制品。