Skip to main content

jQuery removeClass only working with actual class name, not var



I created a page to play around with the 960 Grid System, learn about div placement. There are up to four divs on the page. When a new grid size, pull or push value is selected from a dropdown, I need to remove the current class, i.e. grid_8 , pull_5 or push_4 , and add the newly selected class.







function alter_grid1(new_class_name){



var old = document.getElementById('grid1');

var classes = old.className.split(' ');

var old_class_name = 'cessna';

$.each(classes, function(){



if(old_class_name == 'cessna' || old_class_name == null){

old_class_name = this.match('/grid_1|grid_2|grid_3|grid_4|grid_5|grid_6|grid_7|grid_8|grid_9|grid_10|grid_11|grid_12|grid_13|grid_14|grid_15|grid_16|grid_17/');

}

});

$(old).removeClass('grid_1 grid_2 grid_3 grid_4 grid_5 grid_6 grid_7 grid_8 grid_9 grid_10 grid_11 grid_12 grid_13 grid_14 grid_15 grid_16').addClass(new_class_name);

console.log('Old grid1 class name is ' + old_class_name + ' and New grid1 class name is ' + new_class_name);

}







I can use addClass(new_class_name); without any trouble.





I can use use removeClass('grid_8'); without any trouble (grid_8 being the actual class name)





When I use removeClass(old_class_name); it just doesn't work. No error message, nothing in firebug, just doesn't work.





Since I don't know what the previous value will be, I have to remove any possible class that could be there







$(old).removeClass('grid_1 grid_2 grid_3 grid_4 grid_5 grid_6 grid_7 grid_8 grid_9 grid_10 grid_11 grid_12 grid_13 grid_14 grid_15 grid_16').addClass(new_class_name);







That's the only way I can get it to work. Sure it works, but seems like I'm either missing something or doing something wrong. You can see what I'm trying to do here if it would help. I just don't see how I can add a class using a var, but not remove one the same way.


Comments

  1. Seems your regex is wrong. Use either a string without the slashes or just the slashes.

    old_class_name = this.match(/grid_1|grid_2|grid_3|grid_4|grid_5|grid_6|grid_7|grid_8|grid_9|grid_10|grid_11|grid_12|grid_13|grid_14|grid_15|grid_16|grid_17/);


    or maybe even

    old_class_name = this.match(/grid_[0-9]+/);

    ReplyDelete

Post a Comment

Popular posts from this blog

Slow Android emulator

I have a 2.67 GHz Celeron processor, 1.21 GB of RAM on a x86 Windows XP Professional machine. My understanding is that the Android emulator should start fairly quickly on such a machine, but for me it does not. I have followed all instructions in setting up the IDE, SDKs, JDKs and such and have had some success in staring the emulator quickly but is very particulary. How can I, if possible, fix this problem?

CCNA 1 Final Exam 2011 latest (hot hot hot)

  Hi! I have been posted content of ccna1 final exam (latest and only question.) I will post the answer and insert image on sunday. If you care, please subscribe your email an become a first person have full test content. Subcribe now  Some question  have not content because this question have images content. So that can you wait for me? SUNDAY 1. A user sees the command prompt: Router(config-if)# . What task can be performed at this mode? Reload the device. Perform basic tests. Configure individual interfaces. Configure individual terminal lines. 2. Refer to the exhibit. Host A attempts to establish a TCP/IP session with host C. During this attempt, a frame was captured with the source MAC address 0050.7320.D632 and the destination MAC address 0030.8517.44C4. The packet inside the captured frame has an IP source address 192.168.7.5, and the destination IP address is 192.168.219.24. At which point in the network was this packet captured? leaving host A leaving ATL leaving...