Unfortunately I need to iterate over all the DOM elements of a page and I'm wondering what the most efficient technique is. I could probably benchmark these myself and might if I have the time but I'm hoping someone has already experienced this or has some options I hadn't considered.
Currently I'm using jQuery and doing this:
$('body *').each(function(){
var $this = $(this);
// do stuff
});
While it works, It seems to cause some lag on the client. It could also be tweaked with a more specific jQuery context like $('body', '*')
. It occurred to me that native Javascript is usually faster than jQuery and I found this:
var items = document.getElementsByTagName("*");
for (var i = 0; i < items.length; i++) {
// do stuff
}
I'm assuming the native option is faster. Wondering if there are other options I hadn't considered. Maybe a recursive option that iterates over child nodes in parallel.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…