使用jQuery延迟加载图像

DCD*_*DCD 27 html javascript css jquery

我有一个页面,包括几个画廊,包括手风琴和滑块.问题是页面需要永远加载.有没有办法在一些代码中包装图像或对它应用一个类来强制它只在加载其他所有内容后加载?

jve*_*ema 56

你当然可以.用"#"替换你的img src属性,并添加一个自定义属性,如下所示:

<img src="#" data-delayedsrc="/img/myimage.png" />
Run Code Online (Sandbox Code Playgroud)

然后,在页面加载时添加一个javascript行,执行如下操作:

$('img').each(function(){
  $(this).attr('src', $(this).data('delayedsrc'));
});
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用HTML数据属性. (24认同)
  • 仅使用delayedsrc属性选择imag标签会有轻微的改进,所以不必不必要地循环遍历所有图像元素吗?即.$( 'IMG [delayedsrc]').每个(函数(){ (9认同)
  • 我喜欢它,很好的方法:) (3认同)
  • 您可能需要将其设为blank.gif而不是#以保持IE的快乐,但它应该有效. (2认同)

Dav*_*ner 8

如果你正在使用jQuery(我假设你是这样被标记的话),请看一下jQueryLazy Load Plugin.它会延迟加载视口外部的图像,直到用户滚动到视口.

更新2015:这个插件一度被破坏,但现在再次运行.最后的评论同样多,但我几乎错过了,因为它隐藏在倒塌的评论中.

  • 不幸的是,该插件不再受支持 - (来自网站)"Lazy Load目前无法使用.它无法按预期使用最新的浏览器.我目前没有时间自行更新代码.补丁随时欢迎.如果你找到一个解决方案只需fork并发送一个pull请求.谢谢!" (5认同)

小智 6

延迟加载图像(和iFrames)的一种简单方法是结合使用纯JS,jQuery.data()和自定义HTML5 data-*属性.图像的src最初可以指向加载GIF.data-*属性包含您最终要加载的图像的URL路径.纯JS设置延迟(在下面的示例中为3000毫秒),然后执行jQuery.data(),它将图像的src设置为预期的图像.

下面的示例对每个图像执行class ="load-delay".

实例:http://seandebutts.com/2013/07/03/html5-delay-loading-images-iframes/

JS和jQuery:

$(document).ready(function () {
  setTimeout(function () {
    $('.load-delay').each(function () {
      var imagex = $(this);
      var imgOriginal = imagex.data('original');
      $(imagex).attr('src', imgOriginal);
    });
  }, 3000);
});
Run Code Online (Sandbox Code Playgroud)

HTML和jQuery库:

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
    <meta charset="utf-8" />

</head>
<body>
  <h1>Loading-Delayed Image</h1>
  <img class="load-delay" src="http://i.imgur.com/7ZMlu3C.gif" data-original="http://oi42.tinypic.com/9sqmaf.jpg" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)