如果不支持classList,则使用回退优化javascript函数

时间:2011-07-19 11:12:32

标签: javascript

我有下一个代码:

dom.remove_class = function(element, class_name)
{
    // For Chrome, Firefox...
    if (element.classList)
    {
        return element.classList.remove(class_name);
    }

    // Fallback
    var replace = (" " + element.className + " ").replace(/[\n\t\r]/g, " ").replace(" " + class_name + " ", "");

    if(replace > -1)
    {
        element.className = replace;

        return true;
    }

    return false;
}

很容易为支持它的浏览器返回element.classList.remove(),但我发现(受jQuery启发)关于如何返回true或false的唯一方法是回退部分。有谁知道如何改进这段代码?或者就像现在一样?

提前谢谢!

1 个答案:

答案 0 :(得分:2)

如何在Mozilla hack site上完成:

var removeClass = function (elm, className) {
    if (document.documentElement.classList) {
        removeClass = function (elm, className) {
            elm.classList.remove(className);
        }
    } else {
        removeClass = function (elm, className) {
            if (!elm || !elm.className) {
                return false;
            }
            var regexp = new RegExp("(^|\\s)" + className + "(\\s|$)", "g");
            elm.className = elm.className.replace(regexp, "$2");
        }
    }
    removeClass(elm, className);
}