2011-09-02 33 views
1
function switchTemplate(stylePath){ 
    var ns = $('<link>', { 
      href: stylePath, 
      id: 'themeStyle', 
      type: 'text/css', 
      rel: 'stylesheet' 
     }); 
    $('#themeStyle').replaceWith(ns); 
    resetPops(); 
    positionElements(); 
    $('#video-overlay').show(); 
} 

樣式表正在正確加載,並在短暫延遲後顯示,但positionElements函數(使用offset()定位視頻元素上的#video-overlay)無法正確激發。我猜它沒有新的DOM位置了嗎?javascript樣式表重載延遲影響DOM?

我有positionElements();綁定到窗口調整大小,當我在切換樣式表後立即調用它時,所有內容都放在正確的位置。

我想我可以建立一個計時器延遲,但這似乎並不特別可靠。有沒有其他事件可以綁定positionElements()函數以確保它是最新的?

回答

2

這個SO問題的答案顯示瞭如何確定樣式表是否已完全加載(SO Question)。從那裏你可以移動它加載到這個自定義事件後需要發生的任何函數。

+0

真棒。完善! :) – Damon