如何延迟加载包含带有图像的轮播的包装器 div?

How to lazy load a wrapper div containing a carousel with images?

我有一堆旋转木马,每个旋转木马都包裹在 .lazy_wrap 中。我想延迟加载它们以更快地加载网站。我将如何处理这个?我看过一些延迟加载插件,但它们似乎只适用于图像。我找到了一个名为 jquery-lazyloadanything 的插件,但我不知道如何使用它。

http://jsfiddle.net/8bJUc/667/

<div class="lazy_wrap">
  <div class="owl-carousel">
    <div>
      <img src="http://placehold.it/200x200/42bdc2/FFFFFF&text=1st Row" alt="" />
    </div>
    <div>
      <img src="http://placehold.it/200x200/42bdc2/FFFFFF&text=1st Row" alt="" />
    </div>
    <div>
      <img src="http://placehold.it/200x200/42bdc2/FFFFFF&text=1st Row" alt="" />
    </div>
    <div>
      <img src="http://placehold.it/200x200/42bdc2/FFFFFF&text=1st Row" alt="" />
    </div>
    <div>
      <img src="http://placehold.it/200x200/42bdc2/FFFFFF&text=1st Row" alt="" />
    </div>
    <div>
      <img src="http://placehold.it/200x200/42bdc2/FFFFFF&text=1st Row" alt="" />
    </div>
    <div>
      <img src="http://placehold.it/200x200/42bdc2/FFFFFF&text=1st Row" alt="" />
    </div>
  </div>
</div>
$(document).ready(function() {
  $(".owl-carousel").owlCarousel({
    navigation: true,
    pagination: true
  });
});

http://jsfiddle.net/8bJUc/668/

您只需添加以下代码:

$('img').lazyloadanything({
  'onLoad': function(e, LLobj) {
    var $img = LLobj.$element;
    var src = $img.attr('data-src');
    $img.attr('src', src);
    console.log("loading: ", src);
  }
});

但是您不希望加载图像 "automatically",因此您需要将每个 img 标签上的 src="url" 更改为 data-src="url",例如:

<img data-src="http://placehold.it/200x200/42bdc2/FFFFFF&text=1st Row" alt="" />

您还需要通过 html 标签或 css 为图像添加高度和宽度,因为 lazyloadanything 仅在检测到它们进入屏幕时才加载它们,但它可以只有当它们有尺寸时才会发生。