55

一旦使用 jQuery 加载图像,是否可以检测到?

4

6 回答 6

106

您可以使用.load()事件处理程序,如下所示:

$("#myImg").load(function() {
  alert('I loaded!');
}).attr('src', 'myImage.jpg');

请务必在设置源之前附加它,否则事件可能在您附加处理程序以侦听它之前触发(例如从缓存加载)。

如果这不可行(设置src后绑定),请务必检查它是否已加载并自己触发,如下所示:

$("#myImg").load(function() {
  alert('I loaded!');
}).each(function() {
  if(this.complete) $(this).load();
});
于 2010-08-21T11:40:26.847 回答
21

使用纯 Javascript 一样简单:

  // Create new image
var img = new Image();

  // Create var for image source
var imageSrc = "http://example.com/blah.jpg";

  // define what happens once the image is loaded.
img.onload = function() {
    // Stuff to do after image load ( jQuery and all that )
    // Within here you can make use of src=imageSrc, 
    // knowing that it's been loaded.
};

  // Attach the source last. 
  // The onload function will now trigger once it's loaded.
img.src = imageSrc;
于 2010-08-21T11:50:09.390 回答
5

我也一直在研究这个很长时间,并发现这个插件可以很好地帮助解决这个问题:https ://github.com/desandro/imagesloaded

这似乎是一大堆代码,但是......我发现没有其他方法可以检查图像何时加载。

于 2014-04-07T17:32:16.183 回答
5

使用 jQuery on('load') 函数是检查图像是否已加载的正确方法。但请注意,如果图像已经在缓存中,on('load') 函数将不起作用。

var myImage = $('#image_id');
//check if the image is already on cache
if(myImage.prop('complete')){ 
     //codes here
}else{
     /* Call the codes/function after the image is loaded */
     myImage.on('load',function(){
          //codes here
     });
}
于 2015-02-11T05:41:37.047 回答
1

使用 jquery 很容易:

$('img').load(function(){
   //do something
});

如果尝试使用:

$('tag')html().promise().done(function(){ 
   //do something
}) ;

但这不会检查图片是否已加载。如果代码被加载,那场火灾就完成了。否则,您可以检查代码是否完成,然后触发 img 加载功能并检查图片是否真的加载。所以我们将两者结合起来:

$('tag')html('<img src="'+pic+'" />').promise().done(function(){ 
   $('img').load(function(){
     //do something like show fadein etc...
   });
}) ;
于 2015-12-15T08:56:33.413 回答
0

我认为这可以帮助你一点:

    $('img').error(function(){
        $(this).attr( src : 'no_img.png');
 })

因此,如果它加载 - 将显示原始图像。在其他 - 将显示图像,其中包含带有崩溃图像或 404 HTTP 标头的事实。

于 2015-03-26T07:51:23.993 回答