【发布时间】:2015-03-25 23:12:02
【问题描述】:
好的,我有一个有趣的(嗯,对我来说很有趣,无论如何:))。
我有一种情况,我有一个具有静态类值的 div,但它也可以分配一个动态的“辅助类”。当用户进行选择时,需要删除任何现有的二级类并添加新类。
忽略使用 id 值(项目标准使用类......无法更改),是否有一种优雅的方法可以简单地忽略第一个类并删除任何其他类,然后再添加新类?
示例起始 HTML:
<div class="staticClass dynaClass1" />
示例 JS:
function updateClass(newSecondaryClass) {
$(".staticClass") . . . **** remove any class besides "staticClass" ****
$(".staticClass").addClass(newSecondaryClass);
}
如果使用updateClass("dynaClass2"); 调用该函数,则生成的 HTML 应该是:
<div class="staticClass dynaClass2" />
我能想到的方法包括使用removeClass(); 删除所有类并在添加新类时添加“staticClass”,或者使用attr("class", "staticClass " + newSecondaryClass);,但我想知道是否没有完全不用接触静态类的方式来处理它?
最后,我想这是一个学术问题,比什么都重要。 . .似乎这应该是可行的,但我不知道该怎么做。 :D
【问题讨论】:
-
staticClass是事先知道的,还是我们必须先处理类名? -
请注意,用“头等舱”和“其他舱位”来思考有点离题;元素的集合中的类没有顺序。
-
删除所有类并重新分配该特定类确实是最“优雅”的方式。 jQuery 没有为这些方法提供任何 pattern 匹配项。
-
Álvaro - 好吧,这个类被用作选择器,所以它是已知的,但理想情况下,它不会是硬编码的,这样它就可以更容易地重用。可能作为函数的第二个参数传入。
标签: javascript jquery jquery-selectors removeclass