Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
4
rated 0 times [  9] [ 5]  / answers: 1 / hits: 21411  / 12 Years ago, mon, january 14, 2013, 12:00:00

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


More From » jquery

 Answers
75

You can pass a function to remove class, which returns all but the static Classes:



$('.staticClass').removeClass(function(index, klass) { 
return klass.replace(/(^|s)+staticClasss+/, '');
})


This is returning all the classes that are on the object, without the static one, and therefore removes all classes but the static one.


[#80885] Saturday, January 12, 2013, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
raynamadilynl

Total Points: 653
Total Questions: 110
Total Answers: 98

Location: Honduras
Member since Sat, Jul 24, 2021
3 Years ago
;