使用Javascript迭代兄弟节点的最快方法是什么?
差不多使用Javascript迭代兄弟节点的最快方法是什么?,javascript,jquery,dom,Javascript,Jquery,Dom,差不多 for (var k = 0; k < $('#somediv > p').length; ++k) console.log($('#somediv > p:nth-of-type(' + k.toString() + ')'); for(var k=0;kp')存储在变量中,而不是在每个循环回合重复选择 不要在迭代中使用(k)类型的第n个。只需一次选择所有类型,然后迭代得到的集合即可 总之:$('#somediv>p')已经为您提供了所需的结果。只需使用j
for (var k = 0; k < $('#somediv > p').length; ++k)
console.log($('#somediv > p:nth-of-type(' + k.toString() + ')');
for(var k=0;k<$('#somediv>p')。长度;++k)
log($('#somediv>p:n类型('+k.toString()+')));
不可能是有效的,因为p
元素被多次迭代。执行上述操作的最有效方法是什么?- 将
存储在变量中,而不是在每个循环回合重复选择$('#somediv>p')
- 不要在迭代中使用(k)类型的第n个。只需一次选择所有类型,然后迭代得到的集合即可
$('#somediv>p')
已经为您提供了所需的结果。只需使用jQuery的惯用方法对其进行迭代即可-简单的js循环会更快,但这是可以忽略的
$('#somediv > p').each(function() {
console.log($(this));
});
当然,如果您希望获得原始速度,根本不要使用jQuery
var els = document.getElementById("somediv").children;
for (var i=0, l=els.length; i<l; i++)
if (els[i].tagName == "P")
console.log(els[i]);
var els=document.getElementById(“somediv”).children;
对于(var i=0,l=els.length;iTry
var i=0,p=document.getElementById(“somediv”).queryselectoral(“p”);
做{
console.log(p[i]);
++一,;
}而(i
var i=0,p=document.getElementById(“somediv”).queryselectoral(“p”);
做{
console.log(p[i]);
++一,;
}而(i
0
一,
二,
三,
四,
为什么each()
不适合您?$('somediv>p')。each(function(){/*您的逻辑*/});
不使用jQuery很可能要快得多。当然效率不高,因为当您已经有一个DOM元素集合时,再次搜索DOM的逻辑毫无意义。您想做什么?如果它正在做任何事情,比如更改类或任何其他对每个元素都相同的方法,那么您甚至不需要循环
var i = 0, p = document.getElementById("somediv").querySelectorAll("p");
do {
console.log(p[i]);
++i;
} while(i < p.length )