2011-01-22 45 views
2

嗨,我使用下面的代碼在從服務器接收到「推送」事件後檢索更新的內容。然後使用更新的內容替換已經存在的div /內容。通過AJAX調用向動態注入的div應用樣式(xhrGet)

我遇到的問題是我的外部樣式表中的所有樣式都不適用於此新內容。

它對我來說是合理的,爲什麼會發生這種情況......但是沒有辦法解決這個問題嗎?我可以動態應用樣式,正如我在下面所做的那樣,但似乎應該有一種更簡單的方法。

是否沒有辦法將外部樣式表中的樣式自動應用到動態加載的內容?

見下文代碼:

loadContent = function(page, count) { 
    var xhrArgs = { 
     url: '/content/'+page+'/'+count+'/', 
     handleAs: 'text', 
     load: function(response) { 
      dojo.byId('content').innerHTML = response; 

      dojo.query('.dropdown').forEach(function(node, index, arr) { 
       dojo.style(node, 'display', 'none'); // **This defaults to "display: none" in the stylesheet, but it's not applied until I do this** 
      }); 
     }, 
     error: function(error) { 
      console.debug('error loading content'); 
     } 
    }; 

    var deferred = dojo.xhrGet(xhrArgs); 
}; 
+0

經過進一步檢查,我的問題實際上是沒有應用dojo樣式,因爲我在更新目標div的innerHTML屬性後沒有運行dojo.parser.parse()。請參閱:http://stackoverflow.com/questions/4485631/dojo-and-ajax-initializing-html-with-the-dojotype-attr – 2011-01-22 03:26:22

回答

2

樣式表是動態已經應用。如果這種情況沒有發生,那麼就會出現錯誤,並且新內容可能沒有CSS所應用的標籤名稱和屬性。因此請仔細檢查返回的數據,並使用Firebug幫助您處理新內容。

+0

嗯好吧,我真的認爲是這樣,但我已經檢查了一切。 .. ID名稱和類名稱都匹配,風格適用於非動態內容...至少看起來是這樣的。我會仔細檢查;希望我只是在我面前丟失了一些東西。謝謝。 – 2011-01-22 02:24:02