Lazyload не работает с бесконечной прокруткой

Я использую плагин jscroll для бесконечной прокрутки и плагин jQuery lazyload https://www.appelsiini.net/projects/lazyload

LazyLoad:

 $(function() {
     $("img.lazy").lazyload({
         effect : "fadeIn",
  });
});

Бесконечная прокрутка:

$(function() {
    $('ul.pagination').hide();
    $("img.lazy").lazyload();
    $('.scroll').jscroll({
        loadingHtml: '<div class="text-center"><img src="{{ URL::asset('frontend/img/loading.gif') }}" alt="Loading.." /> Loading..</div>',
        autoTrigger: true,
        nextSelector: '.pagination li.active + li a', 
        contentSelector: 'div.scroll',
        callback: function() {
             $('ul.pagination').remove();
        }
    });
});

Проблема:

Плагин отложенной загрузки работает хорошо, пока я не прокручиваю вниз до конца страницы, и новая страница загружается с бесконечной прокруткой. Когда новая страница загружена, изображения не отображаются.

1 ответ

Решение

Я считаю, что это потому, что плагин lazyload не может получить доступ к новым элементам, предоставляемым плагином бесконечной прокрутки.

Таким образом, при обратном вызове вашего плагина с бесконечной прокруткой повторная инициализация lazyload поможет идентифицировать новые изображения.

$(function() {
  $('ul.pagination').hide();
  $("img.lazy").lazyload();
  $('.scroll').jscroll({
    loadingHtml: '<div class="text-center"><img src="{{ URL::asset('frontend/img/loading.gif') }}" alt="Loading.." /> Loading..</div>',
    autoTrigger: true,
    nextSelector: '.pagination li.active + li a', 
    contentSelector: 'div.scroll',
    callback: function() {
         $('ul.pagination').remove();
         $('img.lazy').lazyload({
           effect: "fade-in"
         })
    }
  });
});
Другие вопросы по тегам