mui.fixed.classlist.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /**
  2. * mui fixed classList
  3. * @param {type} document
  4. * @returns {undefined}
  5. */
  6. (function(document) {
  7. if (!("classList" in document.documentElement) && Object.defineProperty && typeof HTMLElement !== 'undefined') {
  8. Object.defineProperty(HTMLElement.prototype, 'classList', {
  9. get: function() {
  10. var self = this;
  11. function update(fn) {
  12. return function(value) {
  13. var classes = self.className.split(/\s+/),
  14. index = classes.indexOf(value);
  15. fn(classes, index, value);
  16. self.className = classes.join(" ");
  17. };
  18. }
  19. var ret = {
  20. add: update(function(classes, index, value) {
  21. ~index || classes.push(value);
  22. }),
  23. remove: update(function(classes, index) {
  24. ~index && classes.splice(index, 1);
  25. }),
  26. toggle: update(function(classes, index, value) {
  27. ~index ? classes.splice(index, 1) : classes.push(value);
  28. }),
  29. contains: function(value) {
  30. return !!~self.className.split(/\s+/).indexOf(value);
  31. },
  32. item: function(i) {
  33. return self.className.split(/\s+/)[i] || null;
  34. }
  35. };
  36. Object.defineProperty(ret, 'length', {
  37. get: function() {
  38. return self.className.split(/\s+/).length;
  39. }
  40. });
  41. return ret;
  42. }
  43. });
  44. }
  45. })(document);