Javascript jQuery add()性能的替代方案
我知道如何将两个jQuery添加到一起 然而,对于我正在从事的一个项目来说,它已经成为一个性能瓶颈。我胡思乱想,想出了一个替代方案,在性能大幅提高的情况下(在这个提琴中约60毫秒比1000毫秒)也得到了同样的结果:Javascript jQuery add()性能的替代方案,javascript,jquery,Javascript,Jquery,我知道如何将两个jQuery添加到一起 然而,对于我正在从事的一个项目来说,它已经成为一个性能瓶颈。我胡思乱想,想出了一个替代方案,在性能大幅提高的情况下(在这个提琴中约60毫秒比1000毫秒)也得到了同样的结果: var t=$(“#测试”); var tKids=t.children(); var j=$(“开玩笑”); var jKids=j.children(); var z, zMax=30000; var time1=新日期(); 对于(z=0;z我知道出于性能原因,您可能会尝试远
var t=$(“#测试”);
var tKids=t.children();
var j=$(“开玩笑”);
var jKids=j.children();
var z,
zMax=30000;
var time1=新日期();
对于(z=0;z我知道出于性能原因,您可能会尝试远离jQuery API方法,但这值得一试:
var t = $('#test').children();
var j = $('#jest').children();
var added = t.get().concat(j.get());
我不确定.get()
的速度有多快,但我很难想象它比遍历每一组子项要慢。可以进行jsperf测试
编辑
为子孙后代:
.get()
方法允许我们访问每个jQuery对象下面的DOM节点
如果允许混合“孩子”的顺序,可以减少一些循环
for (z=0; z<zMax; z++)
{
var tLen = tKids.length;
var jLen = jKids.length;
var maxLen = Math.max(tLen, jLen);
var allKids = [];
for(var i = 0; i < maxLen; i++)
{
if (i<tLen) allKids.push(tKids[i]);
if (i<jLen) allKids.push(jKids[i]);
}
var opt2 = $( allKids );
}
for(z=0;zYou可以阅读:您也可以在这里测试您的JS性能:谢谢,不知道如何使用get()。当迭代30k次时,只会增加大约100ms。还不错。
for (z=0; z<zMax; z++)
{
var tLen = tKids.length;
var jLen = jKids.length;
var maxLen = Math.max(tLen, jLen);
var allKids = [];
for(var i = 0; i < maxLen; i++)
{
if (i<tLen) allKids.push(tKids[i]);
if (i<jLen) allKids.push(jKids[i]);
}
var opt2 = $( allKids );
}