一旦使用 jQuery 加载图像,是否可以检测到?
问问题
76870 次
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 回答