Do we have getElementsByClassName in javascript?

后端 未结 5 588
生来不讨喜
生来不讨喜 2020-11-27 08:09

Just like in jQuery we can use $(\".classname\"), is there a similar thing in javascript as well? Or if we don\'t have such method then how can i implement that.
Accordi

5条回答
  •  青春惊慌失措
    2020-11-27 08:10

    Another good implementation of getElementsByClassName

    Mixes an XPath and DOM implementation; using XPath wherever possible.

    if (!('getElementsByClassName' in document)) {
        document.getElementsByClassName = function(className, parentElement) {
            if (Prototype.BrowserFeatures.XPath) {
                var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]";
                return document._getElementsByXPath(q, parentElement);
            } else {
                var children = ($(parentElement) || document.body).getElementsByTagName('*');
                var elements = [],
                    child;
                for (var i = 0, length = children.length; i < length; i++) {
                    child = children[i];
                    if (Element.hasClassName(child, className)) elements.push(Element.extend(child));
                }
                return elements;
            }
        };
    }​
    


    P.S: Posting it here because I guess its faster than bobince answer. No offense :)
    Got this from John Resig's getElementsByClassName Speed Comparison

提交回复
热议问题