2013-12-10 92 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