classie.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. /*!
  2. * classie - class helper functions
  3. * from bonzo https://github.com/ded/bonzo
  4. *
  5. * classie.has( elem, 'my-class' ) -> true/false
  6. * classie.add( elem, 'my-new-class' )
  7. * classie.remove( elem, 'my-unwanted-class' )
  8. * classie.toggle( elem, 'my-class' )
  9. */
  10. /*jshint browser: true, strict: true, undef: true */
  11. /*global define: false */
  12. $(function(){
  13. ( function( window ) {
  14. 'use strict';
  15. function classReg( className ) {
  16. return new RegExp("(^|\\s+)" + className + "(\\s+|$)");
  17. }
  18. var hasClass, addClass, removeClass;
  19. if ( 'classList' in document.documentElement ) {
  20. hasClass = function( elem, c ) {
  21. return elem.classList.contains( c );
  22. };
  23. addClass = function( elem, c ) {
  24. elem.classList.add( c );
  25. };
  26. removeClass = function( elem, c ) {
  27. elem.classList.remove( c );
  28. };
  29. }
  30. else {
  31. hasClass = function( elem, c ) {
  32. return classReg( c ).test( elem.className );
  33. };
  34. addClass = function( elem, c ) {
  35. if ( !hasClass( elem, c ) ) {
  36. elem.className = elem.className + ' ' + c;
  37. }
  38. };
  39. removeClass = function( elem, c ) {
  40. elem.className = elem.className.replace( classReg( c ), ' ' );
  41. };
  42. }
  43. function toggleClass( elem, c ) {
  44. var fn = hasClass( elem, c ) ? removeClass : addClass;
  45. fn( elem, c );
  46. }
  47. var classie = {
  48. hasClass: hasClass,
  49. addClass: addClass,
  50. removeClass: removeClass,
  51. toggleClass: toggleClass,
  52. has: hasClass,
  53. add: addClass,
  54. remove: removeClass,
  55. toggle: toggleClass
  56. };
  57. if ( typeof define === 'function' && define.amd ) {
  58. define( classie );
  59. } else {
  60. window.classie = classie;
  61. }
  62. })( window );
  63. })