这是一个效率问题。我已经在某种程度上测试了我的Chrome,但我不知道其他浏览器。
有一些变量会影响结果,例如:
要执行的迭代次数
变量的维度:$('。elems')与$('#elem')不同。
DOM结构
我已完成的测试位于:search by id,search by class
for (j=0;j<med;j++){
start = new Date().getTime();
pippo = $(target);
for (var n = 0; n < maxCount; n++) {
pippo.css({height:'45px'});
}
elapsed = new Date().getTime() - start;
result1 += elapsed;
start = new Date().getTime();
for (var n = 0; n < maxCount; n++) {
$(target).css({height:'45px'});
}
elapsed = new Date().getTime() - start;
result2 += elapsed;
}
结果似乎表明存储变量比搜索每一个都要好。
您有什么看法?
对于我的浏览器,我在存储变量时加速了20-30%。
答案 0 :(得分:1)
鉴于示例中的元素由id
选择,它在页面中应该是唯一的。因此,您应该始终在循环之前缓存它。
var $pippo = $('#pippo');
for (j = 0; j < med; j++) {
start = new Date().getTime();
for (var n = 0; n < maxCount; n++) {
$pippo.css({ height: '45px' });
}
elapsed = new Date().getTime() - start;
result1 += elapsed;
}
如果选择器是class
,那么你需要在循环中定义选择器,或者更好的是在迭代单个选择器时仍然使用each()
。