目标:
载入 .thumbnail
div 中的图像后,红色边框应变为绿色
JSFIDDLE: https://jsfiddle.net/3k8xy2cf/
var container;
var img;
$("#products .thumbnail").each(function() {
container = $(this);
img = new Image();
img.src = $(container).find('img').attr('src');
img.onload = function() {
$(container).addClass('loaded');
}
});
.product {
float: left;
border: 5px solid red;
}
.product.loaded {
border-color: green;
}
.product img {
width: 25%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="products">
<div class="product">
<div class="thumbnail">
<img src="https://placehold.it/600x600" alt="">
</div>
</div>
<div class="product">
<div class="thumbnail">
<img src="https://placehold.it/800x800" alt="">
</div>
</div>
</div>
最佳答案
您的代码比需要的复杂得多。您不需要 each()
循环,您当然不需要从已经存在的元素创建新的 img
元素。
相反,您可以在 img
元素上使用 load()
事件处理程序,将类添加到父级 .thumbnail
,例如这个:
$('#products .thumbnail img').on('load', function() {
$(this).closest('.thumbnail').addClass('loaded');
});
.thumbnail {
border: 2px solid #C00;
}
.thumbnail.loaded {
border-color: #0C0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="products">
<div class="product">
<div class="thumbnail">
<img src="https://placehold.it/125x125" alt="">
</div>
</div>
<div class="product">
<div class="thumbnail">
<img src="https://placehold.it/150x150" alt="">
</div>
</div>
</div>
关于javascript - 图片加载功能不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50878056/