當我們運行下面的Firefox下的腳本...HTML元素其插入到DOM
var d = $("<div class='test'></div>");
d.hide();
$("body").prepend(d);
d.show();
...看向HTML後,這個插入的元素都會有style屬性:
style =「display:block;」
在Webkit的,元件將具有:
風格= 「顯示:無;」
這個場景在我開發的JavaScript組件中使用。該組件在其內部變量中包含HTML元素的集合,並將它們插入到指定的目標容器中。
由於插入的元素具有在style屬性中初始化的display-property,所以它會覆蓋CSS。這打破了頁面的佈局。
作爲一種快速解決方案,我可以在將元素插入到DOM之前存儲「樣式」屬性,並在插入之後將存儲的版本寫入已創建的版本。
有沒有更好的解決方案?
爲什麼會發生這種情況,我該如何檢查元素是否尚未插入DOM?
看看使用Firefox這個測試頁面。 div有「style = display:block;」明確定義。在Webkit下,它有空的樣式屬性。我在Firefox和Safari中使用內置的檢查器。 – AntonAL 2011-03-19 11:05:11
@AntonAL:我明白你在說什麼了。更新了答案。 – 2011-03-19 11:19:15
我對CSS僅有的效果有着同樣的想法。它可以工作,但是當我們在做removeClass()時,CSS動畫將不會播放。我們應該在一些小的時間間隔後,比如說100毫秒。謝謝 ! – AntonAL 2011-03-19 11:51:56