jQuery .load()不能处理我的图像

时间:2010-08-27 21:03:14

标签: jquery

我有一些代码,我试图在我的图像加载完成后运行。我使用以下jQuery代码:

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

然而弹出窗口永远不会出现。我无法让.load()函数工作!有人有这个问题吗?

2 个答案:

答案 0 :(得分:102)

如果你在之后运行图像已经有了设置来源,你需要对缓存图片进行额外的检查(在你添加一个事件处理程序之前就已经触发了事件它)。你可以这样做:

$("#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错误

答案 1 :(得分:0)

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

  

有可能是load事件   如果图像是,将不会被触发   从浏览器缓存加载。至   考虑到这种可能性,我们可以   使用触发的特殊加载事件   如果图像准备就马上。   event.special.load目前   作为插件提供

     

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

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

希望这有帮助!