jQuery - 不要在for循环里追加dom ¶
本文导航
作者:KK
发表日期:2016.11.26
要点速读 ¶
尽量不要在for循环里对dom进行append(改变dom内容的浏览器消耗不小),而是先拼成总体的html再在for结束后一次性append;也更不要在for里面用$函数筛选DOM(重复查找dom不好)
以下代码有两个问题
for(var i in [1, 2, 3]){
$('#wrap').append('<span>' + i + '</span>');
}
问题1:每次循环都执行了$('#wrap')
,这是dom的查找选择过程,每次循环都重新查找,这样的代码质量不好。虽然现今的设备性能运行这些代码已经基本感知不到速度慢,但这种代码折射了一个程序员很不注意这些细节,意味着他写的其他代码质量不过尔尔
问题2:在for循环里执行了append,这样造成三次append,会触发浏览器对dom树进行重新渲染
应该改成下面这样:
var itemsHtml = '';
for(var i in [1, 2, 3]){
itemsHtml += '<span>' + i + '</span>';
}
$('#wrap').append(itemsHtml);