いくつかの記事があり、それぞれに複数のリスト アイテムを含むリストが含まれています。すべてのリスト項目には background-image が定義されています。HTML は次のようになります。
<article>
<ul>
<li><!-- background-image--></li>
<li><!-- background-image--></li>
</ul>
</article>
すべての画像が読み込まれるまで、これらのリスト項目を非表示にしたいと思います。記事ごとにそうしようとしています。
私の最初の試みは、ネストされた 2 つのループを使用することでしたが、少し厄介で複雑に感じました。
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++;
});
});
}
これを行うためのよりエレガントな方法はありますか?