2010-06-29 56 views
1

我正在通过AJAX加载图像标记,并将它们与传统的.html(content)函数一起插入jQuery以及其他一些HTML中。但是,如果您从头开始加载页面,此问题仍然适用。现在,我有一个背景图像占位符放在那里,而图像加载。图像加载时,我希望此背景图像消失。删除图像加载的背景图像

问题:

如果我附上一个传统.load(function)事件监听器,我关注的是,图像可能会加载应用前的对钩(投入小JS <script>挂钩图像之后,而不是在一个$(function(){})块可能会有所帮助)。我还没有遇到这样的行为,但是我在规范中什么都不知道会阻止这种情况的发生(因为在应用挂钩之前,图像标记应该被完全解析)。

我目前的解决方案。将该命令放置在图像标记内的联机onload=属性中。

有没有更好的方法?

回答

4

直到一个星期左右之前,我也会失去。值得庆幸的是this answer to another question将帮助你:

基本上把这个$()

$(function(){ 
    var img = $("#idofimage").load(function() { 
     /* your magic to swap out placeholder */ 
    }); 

    if (img[0].complete) { 
    // Trigger the load handler if the image 
    // is already loaded 
    img.trigger('load'); 
    } 

}); 
+1

啊......所以'完成'是我正在寻找的旗帜。我一直在搜索DOM规范,一定是错过了!干杯。 – 2010-06-29 22:14:46

0

你不需要jQuery的这一点,你可以用CSS做。

.my-img-loader-class { background:url('placeholder-or-progress'); } 

或者,如果你不想改变你的HTML:

#container img { background:url('placeholder-or-progress'); } 

要显示占位符载入图像时,在一个特定的div。

它的工作方式是图像元素将显示占位符图像作为其背景,当src加载它时,它将出现在占位符上方,以便很好地替换它。

+1

这就是我已经在做的事情。一旦图像加载,我希望背景消失。否则,透明图像将显示背景。 @Doug Neiner的工作诀窍。 – 2010-06-29 22:15:38