【发布时间】:2013-04-25 10:56:46
【问题描述】:
我有一些文章,每篇文章都包含一个包含多个列表项的列表。每个列表项都定义了一个背景图像。 HTML 看起来像这样:
<article>
<ul>
<li><!-- background-image--></li>
<li><!-- background-image--></li>
</ul>
</article>
我想隐藏这些列表项,直到每张图片都被加载并且我试图为每篇文章都这样做。
我的第一次尝试是使用两个嵌套循环,但感觉有点笨拙和复杂。
function preloader() {
$('article').each( function(i) {
$(this).addClass('loading');
var childNum = $(this).find('ul li').size();
$(this).find('ul li').each( function(n) {
var bgurl = $(this).css('background-image').replace(/url\(|\)|"|'/g,'');
$('<img/>').attr('src', bgurl).load(function() {
if (n == childNum) {
// remove class .loading from current article
}
});
n++;
});
});
}
有没有更优雅的方式来做到这一点?
【问题讨论】:
-
刚刚更新了我的答案..
标签: jquery html list background preloading