刚刚在编写表格的时候出现了一个问题:我在为表格一个td中的a标签绑定事件时,发现无法绑定成功。
经过调试,了解到:绑定不成功的原因是,在HTML加载时,在td中的a标签并未加载出来,于是乎我的绑定不成功。
绑定的代码是写在</body>的上一行中,处于body的最末尾。按照以往的经验,那么我们应该能够顺利的绑定成功。
然而现实却不会让你那么顺利。
我尝试着将代码放到在a标签下方,于是绑定又成功了。
或者将绑定事件的代码套在ready()中,于是绑定继续成功。
因此真相只有一个——在table加载的时候,尽管浏览器已经遍历了整个HTML文档,但是table中的a标签却还没加载到DOM树之中。于是JS代码找不到该元素。
因此,我严重怀疑table中的加载速度时很慢的。在整个HTML文档遍历完之后,table树还是没有完全的搭建好,导致dom树不完整。
那么table的加载包括那些步骤呢?
table是一个会自适应调整的元素。它会让在自身内部的元素居中对齐,并合理的分配每个td的宽度高度。改动其中一个td的元素,往往牵一发而动全身,会让整个table元素重绘重排。
因此,table的加载必然是一个非常复杂的过程,其中包括的宽度的计算,元素的布局,各种各种。
以上是我的想法,诸位若有什么想法,请务必与我分享。
感谢阅读^ ^.