classes.js 684 B

123456789101112131415161718192021222324252627282930313233
  1. 'use strict';
  2. var cache = {};
  3. var start = '(?:^|\\s)';
  4. var end = '(?:\\s|$)';
  5. function lookupClass (className) {
  6. var cached = cache[className];
  7. if (cached) {
  8. cached.lastIndex = 0;
  9. } else {
  10. cache[className] = cached = new RegExp(start + className + end, 'g');
  11. }
  12. return cached;
  13. }
  14. function addClass (el, className) {
  15. var current = el.className;
  16. if (!current.length) {
  17. el.className = className;
  18. } else if (!lookupClass(className).test(current)) {
  19. el.className += ' ' + className;
  20. }
  21. }
  22. function rmClass (el, className) {
  23. el.className = el.className.replace(lookupClass(className), ' ').trim();
  24. }
  25. module.exports = {
  26. add: addClass,
  27. rm: rmClass
  28. };