@vvvadimos

Как отложить загрузку фоновых изображений на «потом»?

хочу сделать, чтобы загрузка фоновых изображений элементов не включалась в общую загрузку страницы, т.е. чтобы этот индикатор загрузки на вкладке браузера не крутился, пока все все не загрузится. по сути это lazy load для фоновых изображений. мне бы только понять, почему код не работает:
$(document).ready(function(){

    var testElem = $(".test-container");
    
    if(testElem.length){
        testElem.addClass("loaded");
    }

});


класс .loaded добавляет стиль background-image к элементу.
не предлагайте пожалуйста готовые плагины
  • Вопрос задан
  • 1047 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш код работает так, что если на странице есть элементы с классом test-container, то он добавляет им класс loaded. Свойство length у jQuery-объектов содержит в себе кол-во найденных по селектору dom-элементов. Само их наличие никак не связанно с состоянием загрузки изображения, если элемент и есть img, или если в нём вложены другие img.

Самым примитивным решением будет добавить интересующим блокам с фоном класс и снять его на $(document).ready. Ещё после быстрой проверки в хроме стало понятно, что этого мало. Нужно ещё внутри ready обернуть код в setTimeout с задержкой 0 для асинхронности. Хотя, казалось бы, эвент готовности сам по себе асинхроннен.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы