繁体   English   中英

当浏览器本身未实现时,创建我自己的classList对象

[英]Create my own classList object when the browser does not implement it itself

我有使用classList对象添加和删除类的JavaScript代码。 在我收到有关该代码的投诉之前,该代码已正常运行,并能按预期正常工作,因为它在Opera和IE8中均无法运行。

我不想使用任何框架或代码库。 我想最大程度地减少程序中必须更改的代码,因此我想创建自己的classList对象并将其添加到node对象。 我已经有了以下代码:

if (typeof(document.createElement('input').classList) == 'undefined') {
    HTMLElement.prototype.classList = new function () {
        this.add = function (addClass) {
            this.className += addClass;
        }
    }
}

这显然是行不通的。 问题是:我无法像这样访问此对象的HTMLElement.className 我该怎么做? 如何使该对象工作与原始对象相似或完全相同?

Mozilla在这里列出了classList垫片:

http://developer.mozilla.org/en/DOM/element.classList

代码中有很多事情要做,但是看起来就像是您追求的那样。

除了扩展原型之外,您还可以创建一个返回所需值的辅助函数:

classList = function ( elem ) {
    return elem.className.replace(/\s+/g,' ').split(' ');
};

然后,您只需要调用classList(elem) ,而不是调用elem.classList ,这意味着它不能完全像原始的那样工作,但是会返回相同的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM