Okay, I've got an interesting one (well, interesting to me, anyway :) ).
I've got a situation where I have a div with a static class value, but it also can have a single, "secondary class" assigned that is dynamic. When the user makes a selection, any existing secondary class needs to be removed and the new class added.
Ignoring using an id value (standards for the project use the class . . . can't be changed), is there an elegant way to simply ignore the first class and remove whatever other class is there, before adding the new one?
Example Starting HTML:
<div class="staticClass dynaClass1" />
Example JS:
function updateClass(newSecondaryClass) {
$(".staticClass") . . . **** remove any class besides "staticClass" ****
$(".staticClass").addClass(newSecondaryClass);
}
If the function is called using updateClass("dynaClass2");
, the resulting HTML should be:
<div class="staticClass dynaClass2" />
I can think of ways of doing it involving just removing all classes using removeClass();
and adding "staticClass" back in when adding the new class, or using attr("class", "staticClass " + newSecondaryClass);
, but I'm wondering if there isn't a way to handle it without having to touch the static class at all?
In the end, I guess this is an academic question, more than anything . . . just seems like it's something that should be doable, but I don't know how to do it. :D
staticClass
known beforehand or we must handle as such whatever class name comes first? – Xerophthalmiadisplay: block
anddisplay:none
are bound to a class, assigning and reassigning might result in a flicker. – TrimmingremoveClass.addClass
chain, removeClass would have to be given all the classes to be removed, which is potentially a very long string, which is not very elegant. Also a personal opinion. – Trimming.removeClass()
without arguments will clean any class name. – DinnieremoveClass.addClass
may be more readable, but it has its bad sides. – Trimming.removeClass()
and give it a function that dynamically determines which of the current classes to remove, or (2) use the more generic.attr('class', '<final list of classes>')
Excellent . . . thanks for the discussion. Not sure which answer to select since it seems like a combination of multiple ones. – Dryclean