找到具有类名的所有元素的更好方法

时间:2010-11-02 01:56:10

标签: javascript

是否有更好/更快的方式在不支持document.getElementsByClassName的浏览器中查找具有类名的所有元素?

var elements = document.getElementsByTagName('*'),
    results = [];

for (var i=0; i < elements.length; i++) {
  (elements[i].className === selector) ? results.push(elements[i]) : null;
}
return results;

不,我不想使用jQuery:)

2 个答案:

答案 0 :(得分:6)

我会查看John Resig's comparison有关模拟document.getElementsByClassName的方法。

答案 1 :(得分:2)

虽然IE8不支持document.getElementsByClassName,但它支持document.querySelectorAll,因此无论如何这都是IE8的选项。

您可以执行以下操作:

function byClass( sel ) {
    var results;
    if( document.querySelectorAll ) {
        results = document.querySelectorAll( '.' + sel );
    } else if( document.getElementsByClassName ) {
        results = document.getElementsByClassName( sel );
    } else {
        var elements = document.getElementsByTagName('*'),
        results = [];
        // and so on
    }
    return results;
}