在一个页面中,我有这个:
<figure><img src="" data-src="img1.png"></figure>
<figure><img src="" data-src="img2.png"></figure>
<figure><img src="" data-src="img3.png"></figure>
<figure><img src="" data-src="img4.png"></figure>
继续。
我试图在不使用jquery插件的情况下进行异步加载,并使其尽可能简单。
所以我想,当dom准备好并且页面完全加载时,将data-src设置为src。
如果我这样做:console.log($('figure img').attr('data-src'))
我只获得第一张图片。所以它给了我结果:img1.png
那么我怎么能说,当dom准备好所有的数字&gt; img&gt; data-src设置为该img的src。
所以从这个:
<figure><img src="" data-src="img1.png"></figure>
<figure><img src="" data-src="img2.png"></figure>
<figure><img src="" data-src="img3.png"></figure>
<figure><img src="" data-src="img4.png"></figure>
到此:
<figure><img src="img1.png"></figure>
<figure><img src="img2.png"></figure>
<figure><img src="img3.png"></figure>
<figure><img src="img4.png"></figure>
答案 0 :(得分:12)
从版本1.4.3开始,jQuery直接理解了“data-”属性。所以这样做:
$('figure img').each(function() {
this.src = $(this).data('src');
});
您必须使用.each()
来分离最初选择列表中每个元素的处理,以便您执行的操作可以单独使用该元素。
答案 1 :(得分:6)
$('figure > img').prop('src',function() {
return $(this).attr('data-src');
});
或getAttribute()
快一点。
$('figure > img').prop('src',function() {
return this.getAttribute('data-src');
});
如果您确实要删除data-src
,请将.removeAttr('data-src')
链接到最后。
$('figure > img').prop('src',function() {
return this.getAttribute('data-src');
}).removeAttr('data-src');