简体   繁体   中英

Better way to find all elements with a class name

Is there a better/faster way to find all elements with a class name in browsers that don't support 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;

And no I don't want to use jQuery :)

我将检查John Resig在模拟document.getElementsByClassName方法上的比较

While IE8 doesn't support document.getElementsByClassName , it does support document.querySelectorAll , so that would be an option for IE8 anyway.

You could do something like:

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;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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