Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript迭代兄弟节点的最快方法是什么?_Javascript_Jquery_Dom - Fatal编程技术网

使用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 )