使用jQuery检测图像加载是指通过jQuery库提供的方法来监控图像元素的加载状态,包括加载成功、加载失败或加载完成等事件。这对于需要依赖图像尺寸或确保图像正确显示的网页非常重要。
.load()
方法(jQuery 1.8之前)$('img').load(function() {
console.log('图像加载完成');
console.log('图像宽度:', $(this).width());
});
.on('load')
(推荐方式)$('img').on('load', function() {
console.log('图像加载成功');
}).on('error', function() {
console.log('图像加载失败');
});
$(document).on('load', 'img', function() {
console.log('动态添加的图像已加载');
});
原因:可能在绑定事件处理程序时图像已经加载完成 解决方案:
$('img').each(function() {
if(this.complete) {
$(this).trigger('load');
}
});
原因:浏览器可能从缓存加载图像而不触发事件 解决方案:
$('img').one('load', function() {
console.log('图像加载完成');
}).each(function() {
if(this.complete) $(this).trigger('load');
});
var images = $('img');
var loaded = 0;
images.on('load', function() {
loaded++;
if(loaded === images.length) {
console.log('所有图像加载完成');
}
}).each(function() {
if(this.complete) $(this).trigger('load');
});
.load()
方法已被弃用,应使用.on('load')
<!DOCTYPE html>
<html>
<head>
<title>图像加载检测示例</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<style>
.loading { opacity: 0; }
.loaded { opacity: 1; transition: opacity 0.5s; }
</style>
</head>
<body>
<img src="image1.jpg" class="loading" alt="示例图像1">
<img src="image2.jpg" class="loading" alt="示例图像2">
<script>
$(document).ready(function() {
var $images = $('img');
var loadedCount = 0;
var totalImages = $images.length;
$images.on('load', function() {
$(this).addClass('loaded').removeClass('loading');
loadedCount++;
console.log('已加载 ' + loadedCount + '/' + totalImages);
if(loadedCount === totalImages) {
console.log('所有图像加载完成');
// 执行后续操作
}
}).on('error', function() {
console.log('图像加载失败: ' + $(this).attr('src'));
$(this).attr('src', 'placeholder.jpg'); // 替换为占位图
}).each(function() {
if(this.complete) $(this).trigger('load');
});
});
</script>
</body>
</html>
这个示例展示了如何检测多个图像的加载状态,并在加载完成后添加CSS类实现淡入效果,同时处理加载失败的情况。
没有搜到相关的沙龙