2010-03-02 16 views
9

在Javascript中,我正在清除DIV的内容然后重新填充它,是否有任何方法暂停这些元素的布局或锁定UI,直到我完成了在HTML?我不想让任何消息弹出,我只是不想看到闪烁的项目被删除/添加。在DOM交互过程中挂起布局

var fragment = document.createDocumentFragment(); 
// build node in fragment 

var div = /* … */; // DIV that should be replaced 
div.parentNode.replaceChild(fragment, div); 

回答

2

隐藏它通过添加样式属性显示:

+0

然后,这导致div崩溃,我要检查高度设置,看看我是否可以保持一致的高度时,这样做,谢谢。 – Mantorok 2010-03-02 14:03:36

+1

你可以放置一个外部div来保持大小一致...只是一个想法。 – 2010-03-02 17:59:36

+0

这是我最终做的,我忘记了div占位符被隐藏,所以我在该div中放置了一个占位符,一切都很好。 – Mantorok 2010-03-03 11:33:01

13

你可以将其插入到实际的文件之前在一个DocumentFragment新元素的内容没有,做的东西,然后重新显示在div后

+2

大多数图形库使用相同的'技巧',称为双缓冲 – xtofl 2010-03-02 15:15:51

0

只有建议可以更新div内容作为一个整体,通过构建整个内容html,然后将其一次添加到div innerHTML,相反,将div元素逐个添加到div中,这是更昂贵的计算因为它涉及每次重建dom树(容易造成闪烁)

+0

嗨,我使用JQuery的html()函数一次性添加它。 – Mantorok 2010-03-02 14:03:01

0

我发现通过对div进行排序将高度应用于固定高度,高度并未设置,因此它随着内容的增长/收缩而变化。

感谢您的回答哦,Doh!