$class.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. var toArr = require('./toArr');
  2. var some = require('./some');
  3. var $safeEls = require('./$safeEls');
  4. var isStr = require('./isStr');
  5. var each = require('./each');
  6. exports = {
  7. add: function(els, name) {
  8. els = $safeEls(els);
  9. var names = safeName(name);
  10. each(els, function(el) {
  11. var classList = [];
  12. each(names, function(name) {
  13. if (!exports.has(el, name)) classList.push(name);
  14. });
  15. if (classList.length !== 0) {
  16. el.className += (el.className ? ' ' : '') + classList.join(' ');
  17. }
  18. });
  19. },
  20. has: function(els, name) {
  21. els = $safeEls(els);
  22. var regName = new RegExp('(^|\\s)' + name + '(\\s|$)');
  23. return some(els, function(el) {
  24. return regName.test(el.className);
  25. });
  26. },
  27. toggle: function(els, name) {
  28. els = $safeEls(els);
  29. each(els, function(el) {
  30. if (!exports.has(el, name)) return exports.add(el, name);
  31. exports.remove(el, name);
  32. });
  33. },
  34. remove: function(els, name) {
  35. els = $safeEls(els);
  36. var names = safeName(name);
  37. each(els, function(el) {
  38. each(names, function(name) {
  39. el.classList.remove(name);
  40. });
  41. });
  42. }
  43. };
  44. function safeName(name) {
  45. return isStr(name) ? name.split(/\s+/) : toArr(name);
  46. }
  47. module.exports = exports;