2011-09-12 114 views
2

所以我有一个页面,动态加载图像在用户请求,基本上随机图像会弹出时,他们点击一个按钮。我想找到一种方法来隐藏图像,直到它完成加载,然后再次显示。我试着用jQuery的$(window).load()函数来做这件事,它对第一个图像完美地工作,但是当我加载下一个图像时事件不会再次触发。有没有另外一种方法来做到这一点,或重置load()事件?谢谢。jQuery等待动态图像加载

注意:有问题的图片是相当大的gif动画,但它们非常,有些只需要一些时间加载,有些可能需要20秒。

+0

这是可能的,但你需要告诉我们你正在使用的代码,所以我们可以建议。 – jfriend00

回答

0

隐藏它使用CSS和倾听每个图像的加载事件:

<img style="display: none" class="loadedImage" src="..." /> 

$(function(){ 
    $(".loadedImage").live("load", function(){ 
     $(this).show(); 
    }); 
}); 
+0

这是我从'.live()'文档的理解,'.live()'不适用于加载事件。它只适用于泡泡文档的某些类型的事件。请参阅此处的“注意事项”部分:http://api.jquery.com/live/。 – jfriend00

+0

谢谢。我不知道。我原本想编写简单的“.load()”,但由于我不太确定_dynamically loaded images_意味着什么(不管标记是否已经存在,只有src正在改变或者是什么),我插入了'.live ()' –

3

我有一个jQuery plugin called waitForImages这将有助于这一点。

$('#newly-loaded-element').hide().waitForImages(function() { 
    $(this).show(); 
}); 
+0

如果以后使用相同的标签加载新图像,图像src属性被更改,该插件是否可以工作? – guub

+0

@guub不,您需要在更新'src'属性后再次调用它。 – alex