2010-08-27 49 views
35

我有一些代码,我试图在我的图像加载完成后运行。我使用以下jQuery代码:jQuery .load()不能在我的图像上工作

$("#myimageid").load(function() { 
    alert('Image Loaded'); 
}); 

但是,弹出窗口永远不会显示。我无法使.load()函数正常工作!任何人都有这个问题?

+0

凡到底有没有你放置的代码? – Pointy 2010-08-27 21:04:41

回答

87

如果您在之后运行此图像已经有设置源,则需要对缓存图像(在添加事件处理程序侦听它之前触发该事件的人员)进行额外检查。你可以是这样做的:

$("#myimageid").on('load', function() { 
    alert('Image Loaded'); 
}).each(function() { 
    if(this.complete) $(this).load(); 
}); 

更新更高版本的查询,使用方法:

if(this.complete) $(this).trigger('load'); 

使用(this).load();会产生一个错误Cannot read property 'indexOf' of undefined

+0

工作!感谢队友 $(document).ready(function(){(“#googleimage”)。load(function(){ alert('Image Loaded'); })。each(function(){if (this.complete)$(this).load();}); }); – 2010-08-30 12:50:00

+1

不错,为什么这么难找到! – 2012-09-18 09:56:49

+0

当我意识到我在选择课程时错过了一个小点时,我只是想为不工作的解决方案付出代价。咄!感谢和upvoted! – 2013-05-10 19:41:58

0

当您清除浏览器的缓存并再次尝试脚本时会发生什么?从jQuery load()docs

这是可能的,如果图像是 从浏览器缓存加载的加载事件 不会被触发。对于 考虑这种可能性,我们可以使用 使用一个特殊的加载事件,如果图像准备就立即触发 。 event.special.load目前 作为插件

在一般情况下,没有必要 等待所有图像完全 加载。如果代码早些时候可以执行 ,通常最好将 它放在发送到.ready() 方法的处理程序中。

所以它听起来像你的缓存图像不会触发加载事件,所以你可能想要尝试插件提到。你可以找到JS文件下载here

希望这会有所帮助!