Skip to content

Instantly share code, notes, and snippets.

@MethodGrab
Forked from branneman/svg-classes.js
Created June 6, 2016 09:51
Show Gist options
  • Save MethodGrab/c47bd67e4ec8ba4124a2233e84ca8213 to your computer and use it in GitHub Desktop.
Save MethodGrab/c47bd67e4ec8ba4124a2233e84ca8213 to your computer and use it in GitHub Desktop.
SVG — hasClass, addClass, removeClass, toggleClass
//
// SVG — hasClass, addClass, removeClass, toggleClass
// Source:
// https://gist.github.com/branneman/8436956
// Taken and adapted from:
// http://toddmotto.com/hacking-svg-traversing-with-ease-addclass-removeclass-toggleclass-functions/
//
if (SVGElement && SVGElement.prototype) {
SVGElement.prototype.hasClass = function (className) {
return new RegExp('(\\s|^)' + className + '(\\s|$)').test(this.getAttribute('class'));
};
SVGElement.prototype.addClass = function (className) {
if (!this.hasClass(className)) {
this.setAttribute('class', this.getAttribute('class') + ' ' + className);
}
};
SVGElement.prototype.removeClass = function (className) {
var removedClass = this.getAttribute('class').replace(new RegExp('(\\s|^)' + className + '(\\s|$)', 'g'), '$2');
if (this.hasClass(className)) {
this.setAttribute('class', removedClass);
}
};
SVGElement.prototype.toggleClass = function (className) {
if (this.hasClass(className)) {
this.removeClass(className);
} else {
this.addClass(className);
}
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment