$.each()
内に構築された配列からのデータを、繰り返さずに追加する方法を考え出そうとしています。ul.featured-list
<div id="home-page-featured">
<ul class="featured-list"></ul>
<ul class="featured-list"></ul>
<ul class="featured-list"></ul>
</div>
の内容はli
以下になります。
<li>
<a href="http://local.site.com/chocolate-cakes/">
<img width="186" height="186" src="http://local.site.com/view/img/blank.jpg" />
</a>
</li>
次のように、それぞれに含まれるli
s の数を計算します。ul
var amount = Math.floor($(document).width() / 186) + 2;
次にli
、ajax で s を形成するコンテンツを取得します。
$.ajax({
url : '/json/projects/' + (amount * 3),
type : 'GET',
success: function(reply, textStatus, jqXHR) {
var projects = [];
$.each(reply, function(i, v) {
if(v['gallery'][0])
{
console.log(v['gallery'][0]);
projects.push(
'<li>'
+'<a href="/project/'+v['id']+'" title="'+v['name']+'">'
+'<img src="/data/images/'+v['gallery'][0].name+'" />'
+'</a>'
+'</li>'
);
}
});
console.log(projects);
}
});
残っている唯一のジレンマは、それらli
の sprojects
をすべてのファイルに再配布する方法です。ul.featured-list
li
それぞれが含むことができる最大の s が 10 であるとしましょう。11 のs が含まれているul.featured-list
場合、10 は最初の行に移動し、残りは 2 番目の行に続きます。projects
li
ul.featured-list
私の考え:
$.each()
コンテンツを繰り返すため、ul
s は機能しません- 最初にコンテンツの追加を開始し、停止
ul
に達しamount
たら、既に追加されているものを削除して 2 番目のプロセスを続行するul
こともできますが、それはそれほどエレガントな方法ではないと思います
それで、あなたはどう思いますか?この問題にアプローチするためのどのような提案がありますか?
アップデート
これは私が使用している現在のソリューションですが、それほど効率的ではないと感じています...どうすれば最適化できますか? http://jsfiddle.net/nV5RU/9/