Skip to content

Instantly share code, notes, and snippets.

@steverydz
Created October 28, 2013 23:12
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save steverydz/7206477 to your computer and use it in GitHub Desktop.
Save steverydz/7206477 to your computer and use it in GitHub Desktop.
/*
JavaScript class helpers
See: http://toddmotto.com/creating-jquery-style-functions-in-javascript-hasclass-addclass-removeclass-toggleclass/
*/
function hasClass(elem, className) {
return new RegExp(" " + className + " ").test(" " + elem.className + " ");
}
function addClass(elem, className) {
if (!hasClass(elem, className)) {
elem.className += " " + className;
}
}
function removeClass(elem, className) {
var newClass = " " + elem.className.replace(/[\t\r\n]/g, " ") + " ";
if (hasClass(elem, className)) {
while (newClass.indexOf(" " + className + " ") >= 0) {
newClass = newClass.replace(" " + className + " ", " ");
}
elem.className = newClass.replace(/^\s+|\s+$/g, "");
}
}
function toggleClass(elem, className) {
var newClass = " " + elem.className.replace(/[\t\r\n]/g, " ") + " ";
if (hasClass(elem, className)) {
while (newClass.indexOf(" " + className + " ") >= 0) {
newClass = newClass.replace(" " + className + " ", " ");
}
elem.className = newClass.replace(/^\s+|\s+$/g, "");
} else {
elem.className += " " + className;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment