Skip to content

Instantly share code, notes, and snippets.

@yumyo
Created November 13, 2012 15:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yumyo/4066436 to your computer and use it in GitHub Desktop.
Save yumyo/4066436 to your computer and use it in GitHub Desktop.
JavaScript toggleClass Function
/**
* @author Joshua Heller
*/
function hasClass(ele, cls) {
return ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
}
function addClass(ele, cls) {
if (!this.hasClass(ele, cls))
ele.className += " " + cls;
}
function removeClass(ele, cls) {
if (hasClass(ele, cls)) {
var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)');
ele.className = ele.className.replace(reg, ' ');
}
}
function replaceClass(ele, oldClass, newClass) {
if (hasClass(ele, oldClass)) {
removeClass(ele, oldClass);
addClass(ele, newClass);
}
return;
}
function toggleClass(ele, cls1, cls2) {
if (hasClass(ele, cls1)) {
replaceClass(ele, cls1, cls2);
} else if (hasClass(ele, cls2)) {
replaceClass(ele, cls2, cls1);
} else {
addClass(ele, cls1);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment