jQuery - 不要在for循环里追加dom

本文导航

  1. 要点速读
  • 作者: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);