2012-04-12 77 views
0

我有一個div,我用jQuery動態替換。CSS樣式不適用於替換jQuery的內容

我做這樣的事情:

$.get(url, function(result){ 
    $("#myDiv").replaceWith($(result)); 
} 

請求是正確無誤且標記加載沒有問題,但即使通過Ajax調用(「迴歸」)返回的內容是完全一樣的#myDiv(它包含一個具有相同ID的元素),某些樣式未正確應用。

最奇怪的是,使用Chrome瀏覽器,如果我右鍵單擊具有錯誤樣式的元素並選擇「檢查元素」,樣式將被加載得很好。

這可以在IE8上正常工作。

有什麼想法可以在Chrome上造成這種情況?

謝謝

+0

您是否暗示您的樣式表按ID查找元素?您可能想嘗試通過類指定樣式,並確保將該類添加到「結果」中。 – veeTrain 2012-04-12 17:54:02

回答

0

您是否在任何地方使用jQuery函數removeAttr('style')? Chrome或其他Webkit瀏覽器有時會造成麻煩。 請參閱http://bugs.jquery.com/ticket/9699

+0

不,從js沒有任何樣式修改 – willvv 2012-04-12 17:56:55

0

Chrome的DOM選擇器比IE8更嚴格。

我建議按類別而不是ID定位元素,即使它對於該元素是唯一的。

+0

嘗試過但它具有相同的行爲 – willvv 2012-04-12 17:56:38

1

這聽起來像重繪沒有觸發。您可以嘗試強制更換後的樣式更換如下:

$(some_selector_in_the_result).css('display','block'); 
1

其實我剛剛找到了解決方案。

不正確樣式的元素是一個絕對位置的div。

我只設置底部位置,但不是左邊(這是0)。

我明確地將CSS中的左邊設置爲0,現在看起來很好。

由於某種原因,Chrome顯然默認位置不同。