zoukankan      html  css  js  c++  java
  • 原生js addclass,hasClass,removeClass,toggleClass的兼容

    (function (window) {
    
        'use strict';
    
        // class helper functions from bonzo https://github.com/ded/bonzo
    
        function classReg(className) {
            return new RegExp("(^|\s+)" + className + "(\s+|$)");
        }
    
        // classList support for class management
        // altho to be fair, the api sucks because it won't accept multiple classes at once
        var hasClass,
        addClass,
        removeClass;
    
        if ('classList' in document.documentElement) {
            hasClass = function (elem, c) {
                return elem.classList.contains(c);
            };
            addClass = function (elem, c) {
                elem.classList.add(c);
            };
            removeClass = function (elem, c) {
                elem.classList.remove(c);
            };
        } else {
            hasClass = function (elem, c) {
                return classReg(c).test(elem.className);
            };
            addClass = function (elem, c) {
                if (!hasClass(elem, c)) {
                    elem.className = elem.className + ' ' + c;
                }
            };
            removeClass = function (elem, c) {
                elem.className = elem.className.replace(classReg(c), ' ');
            };
        }
    
        function toggleClass(elem, c) {
            var fn = hasClass(elem, c) ? removeClass : addClass;
            fn(elem, c);
        }
    
        var classie = {
            // full names
            hasClass : hasClass,
            addClass : addClass,
            removeClass : removeClass,
            toggleClass : toggleClass,
            // short names
            has : hasClass,
            add : addClass,
            remove : removeClass,
            toggle : toggleClass
        };
    
        // transport
        if (typeof define === 'function' && define.amd) {
            // AMD
            define(classie);
        } else {
            // browser global
            window.classie = classie;
        }
    
    })(window);

    经测试,兼容IE8以下;

    参考:https://github.com/ded/bonzo

  • 相关阅读:
    抽象与接口的综合练习
    java构造函数能否被继承,为什么?
    题解 【USACO 4.2.1】草地排水
    题解 【NOI2010】超级钢琴
    题解 [USACO Mar08] 奶牛跑步
    题解 【NOIP2016】魔法阵
    题解 对称二叉树
    题解 【NOIP2014】解方程
    题解 【NOIP2010】关押罪犯
    题解 贪吃蛇
  • 原文地址:https://www.cnblogs.com/jone-chen/p/5952942.html
Copyright © 2011-2022 走看看