4

将主体的所有元素放在一个数组中然后循环遍历每个元素的“最快”(最有效)方法是什么?

4

4 回答 4

3

您可以在 jquery 中使用星形选择器。

var allElems=$('body').find('*');

allElems 将是类似对象的数组,因此您可以在其上创建一个 for 循环,或者您可以使用 jquery 每个方法来遍历所有对象。喜欢

allElems.each(function(){
     var elm=this, //javascript DOM object
         $elm=$(this) //jquery object for element.

});

如果您只想使用 javascript,您可以使用 querySelectorAll dom 方法。

var allElems=document.body.querySelectorAll('*'); // new browser support

或者

var allElems=document.body.getElementsByTagName('*'); //all browser support

比您可以使用 for 循环遍历所有元素。

于 2013-10-19T17:12:02.593 回答
3

我建议这样做:

var items = document.body.getElementsByTagName("*");
for (var i = 0, len = items.length; i < len; i++) {
    // do something with items[i] here
}
于 2013-10-19T17:18:59.373 回答
2

您可以使用:

var els = document.body.querySelectorAll( '*' ),
    len = els.length, i = 0;

for ( ; i < len; i++ )
    console.log( els[i] );

浏览器对 querySelectorAll 的支持:http://caniuse.com/#feat=queryselector

有趣的是,它querySelectorAll返回静态 NodeLists,与getElementsByTagName返回实时 NodeLists 不同。

于 2013-10-19T17:23:30.757 回答
-2

It would be something like this:

var allElements = $(body).find('*');

allElements.each(function(){
   //do something
})
于 2013-10-19T17:35:41.937 回答