2010-03-02 19 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!