2013-12-10 90 views
1

我正在從服務器獲取數據。數據包含許多圖像和其他一些html元素。當用服務器響應替換div的內容時,它總是在div內閃爍。從ajax更新div內容時閃爍和閃爍

$('#div').html(serverResponse); 

我也跟着這個方法:How to avoid blinking when updating page from ajax但仍閃爍

如何防止閃爍。

+0

當你說眨眼時,你的意思是什麼?我試圖找出問題是否是加載後,你把它們放在HTML中的圖像或如果它是別的東西?您的圖片是否有圖片標籤中指定的高度和寬度,以便在圖片加載之前知道它們的大小? – jfriend00

+0

的意思是,它顯示像重新加載div部分的圖像和內容。 – SBK

+0

服務器響應是這樣的:服務器發送包含一個主div和幾個小div的html。小div包含圖像。現在收到響應後,我將替換$('#div')。html(serverResponse)。但它顯示的圖像是 - 正在重新加載,需要時間,閃爍和閃爍。 – SBK

回答

1

您可以先隱藏'#div',然後等到所有images都加載完畢,然後顯示'#div'

$.ajax({ 
    url: '', 
    success: function (serverResponse) { 
     $('#div').html(serverResponse).hide(); 

     var $imgs = $('#div img'), //all images inside '#div' 
      len = $imgs.length, 
      imgs_loaded = 0; 

     $imgs.load(function(){ 
      imgs_loaded++; 
      if(imgs_loaded == len){ 
       $('#div').show(); 
      } 
     }); 
    } 
}); 
+0

我在你的評論中看到你有一個'主要的div',也許最好隱藏顯示div來代替。 '$('#div')。html(serverResponse).find('one main div')。hide();' –

+0

非常感謝。您的解決方案非常完美。再次感謝。我現在創建了兩個div。根據您的解決方案將服務器響應放在隱藏的div中,當它完全加載時,我隱藏了一個div並顯示此隱藏的div。 – SBK

+0

優秀的答案... + 1 – Hackerman