admin管理员组文章数量:1415111
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 :)
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 :)
Share Improve this question asked Nov 2, 2010 at 1:56 errorhandlererrorhandler 1,7673 gold badges22 silver badges29 bronze badges 6- 4 This doesn't actually get all the elements with the class, it gets the elements with only this class. – Nick Craver Commented Nov 2, 2010 at 1:58
- Hey! I never noticed that :) is there a way to find elements with the class? – errorhandler Commented Nov 2, 2010 at 1:59
-
1
@user494211 - Something like this:
for (var i=0; i < elements.length; i++) { if (" "+elements[i].className+" ".indexOf(" "+selector+" ") !== -1) results.push(elements[i]); }
– Nick Craver Commented Nov 2, 2010 at 2:05 - @NickCraver: borrowing jQuery's hasClass method, are we? – OozeMeister Commented Aug 20, 2013 at 15:56
- 1 @OozeMeister that approach has been around for as long as I can remember, and well before jQuery...the jQuery implementation is actually quite different. – Nick Craver Commented Aug 20, 2013 at 16:03
2 Answers
Reset to default 6I would check out John Resig's parison on methods for simulating 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;
}
本文标签: javascriptBetter way to find all elements with a class nameStack Overflow
版权声明:本文标题:javascript - Better way to find all elements with a class name - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745207732a2647719.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论