Пытаюсь создать простую ленивую загрузку изображения, чтобы заменить изображение по умолчанию изображением основного элемента после загрузки страницы и полной загрузки изображения.Но я получаю сообщение об ошибке, используя приведенный ниже код jquery.
Пример HTML
<img src="default.png" data-src="image-1.png" class="productImage"/>
<img src="default.png" data-src="image-2.png" class="productImage"/>
<img src="default.png" data-src="image-3.png" class="productImage"/>
<img src="default.png" data-src="image-4.png" class="productImage"/>
Пример Jquery
$(function(){
$('img.productImage').each(function(){
var this_image = this;
var src = $(this_image).attr('src');
var lsrc = $(this_image).attr('data-src');
if(lsrc.length > 0){
var img = new Image();
img.src = lsrc;
$(img).load(function() {
this_image.src = this.src;
});
}else{
this_image.src = src;
}
});
});
Приведенный выше скрипт выдает эту ошибку TypeError: e.indexOf is not a function[Learn More] jquery-3.2.1.min.js:2:82466
.
Я также пытался использовать приведенный ниже код, и он работал, но я не очень уверен, что он ожидает загрузки изображения перед заменой src, потому что он всегда заменяетзагрузка одной страницы.
$(function(){
$('img.productImage').each(function(){
var this_image = this;
var src = $(this_image).attr('src');
var lsrc = $(this_image).attr('data-src');
if(lsrc.length > 0){
this_image.src = lsrc;
}else{
this_image.src = src;
}
});
});