第三章 2011-12-21
1,访问DOM的次数越多,代码运行速度越慢。减少访问DOM的次数,把运算尽量留在ECMAScript这一端处理。
2,使用数组来合并大量字符串,会让innerHTML效率更高。
3,循环一个HTML集合比循环一个数组效率要低很多。
子节点 childNodes => children
子节点长度 childNodes.lenght => childElementCount
第一个子节点 firstChild => firstElementChild
最后一个子节点 lastChild => lastElementChild
下一个子节点 nextSibling => nextElementSibling
前一个子节点 previousSibling => previousElementSibling
注:前者为IE6、7、8支持,后者为FF,safari,chrome,opera支持
选择器API
使用CSS选择器,效率比document.getElementsByTagName()要快,且该方法返回的不是一个HTML集合
返回第一个匹配的节点
注:目前有IE8,FF,safari,chrome,opera支持此选择器API
批量修改DOM尽量减少浏览器的重绘和重排
推荐方法是创建并更新一个文档片断,然后把它附加到原始列表中,如:
监听冒泡
一直在路上 - junNe.NET is powered by Typecho))) and Theme From junType
对于第一点,我将元素的属性用jQuery的data机制来存储,以优化后期的属性读取性能。
CSS选择器,在保证正确率的情况下尽量短,因为CSS匹配是从右至左的。
修改DOM,我是使用jQuery的,其内部对于DOM操作的实现就是基于DocumentFragment的,我就不用考虑这个了,哈哈
@CzBiX
还是兄台研究比较透彻,要多向你学习啊~