約 300 個の DIV に HTML データを入力しているため、完了するのに 18 秒かかるスクリプトがあります。以下のコード:
HTML:
<div id="window">
<div id="wall">
<div class="module">
<div>
<div class="face front"></div>
<div class="face back"></div>
</div>
</div>
</div>
</div>
Javascript:
for (i = 0; i < numModules-1; ++ i)
{
var $mod = $('.module:eq(0)').clone();
modLeft += modSize;
if (modLeft + modSize > $('#wall').width())
{
modLeft = 0;
modTop += modSize;
}
$mod.css({
left: modLeft,
top: modTop
}).appendTo('#wall');
}
$.getJSON('html_server.php?callback=?', function(data) {
var htmlCount = data.length;
for (i = 0; i < numModules /* 300 or more */; ++ i)
{
var pick = Math.floor(Math.random() * Math.floor(htmlCount/2)) * 2;
var contentFront = data[pick];
var contentBack = data[pick+1];
var modStyle = '';
var $mod = $('.module:eq(' + i + ')');
var $modFront = $mod.find('.front');
var $modBack = $mod.find('.back');
// Set HTML content on front & back of module
$modFront.html(contentFront);
$modBack.html(contentBack);
}
});
2 つの呼び出しをコメント アウトする.html()
と、実行時間が約 110 ミリ秒に低下するため、これらが原因であることは明らかです。HTML コンテンツは大量ではなく、せいぜい 300 バイトのデータです。
何かアドバイス?
編集: DIV を作成するコードを追加しました。おそらく、それを getJSON コールバック内に移動して、作成された HTML にドロップすることはできますか? それは役に立ちますか?