在jQuery中加载图像

时间:2013-12-11 11:13:54

标签: javascript jquery html

所以这就是问题,

我正在尝试使用jQuery加载图像以加快页面下载速度。 为了实现它,我将以下代码作为图像,我想在页面加载后加载。

<img src="/pixel.png" new-img="/newimage.png"/>

然后,要在文档完全加载后加载最终图像,我使用了以下内容。

$(document).ready(function(){ 
    $("img").attr("src", $("img").attr("new-img"));
});

这适用于单个图像,但我有多个图像要转换为此图像。 当我尝试加载这样的多个图像时,我完全难以接受,它将所有图像设置为最后加载的图像。

我不确定,但是'$(this)'与它有什么关系吗?

的jsfiddle: http://jsfiddle.net/AeroMcDoom/8sxED/

5 个答案:

答案 0 :(得分:6)

使用:

$("img").attr("src", function(){return $(this).attr("new-img")});

仅供参考,您应该使用data- *属性:

<img src="/pixel.png" data-img="/newimage.png"/>

然后:

 $("img").attr("src", function(){return $(this).data("img")});

答案 1 :(得分:1)

试试这个:

$("img").each(function(){$(this).attr("src", $(this).attr("new-img"))});
匹配多个元素的选择器上的

.attr将无法正常工作。 .attr()会将找到的所有图片的属性设置为已定义的内容。此外,您无法使用$("img").attr("new-img")进行设置,因为.attr()始终只返回它从选择器中找到的第一个值。

答案 2 :(得分:0)

$(document).ready(function(){ 
    $("img").each(function(){
      $(this).attr('src',$(this).attr("new-img"));
    });
});

答案 3 :(得分:0)

稍微减少开销:

$(function(){ 
    $("img").each(function(){
        this.src = this.getAttribute('data-newimg');
    });
});

除非你需要在IE6上工作,否则没有必要为每个图像初始化一次或两次jQuery。

答案 4 :(得分:0)

我认为你可以通过这样做来保存额外的HTTP请求:

<div class="lazy">
  <img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAA ///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
    data-src="/newimage.png"
    alt="Good to go" />
</div>

和JS:

$(window).on('load', function() {

   $(".lazy > img").each(function(){
      var src = $(this).attr('data-src');

      $(this).attr('src',src);
   });
});