私がやっているのは、ピクセルとして動作するdivを持つdiv( "#gd_graphics_grid")の四角形を描画することです。問題はちょっと遅いです。 Chrome上では(少し遅い)OKかもしれませんが、IE上では悪夢です(IE JavaScriptエンジンが遅いため、これは正常です)。私は(に試みたが、成功しなかった)、このコードを最適化する方法があるかどうかを知りたい:JavaScriptコードが遅い(JQuery)それを最適化する方法はありますか?
ここにdivを生成/ PHP HTMLです:
<div id="gd_graphics">
<p id="gd_loader">Veuillez patienter!</p>
<div id="gd_graphics_grid">
<?php for($row = 0; $row < 73; $row++) : ?>
<div class="gd_grid_row">
<?php for($block = 0; $block < 130; $block++) : ?>
<div class="gd_grid_block"><div class="gd_grid_block_wrap"></div></div>
<?php endfor; ?>
<div class="gd_hidden"></div>
</div>
<?php endfor; ?>
</div>
</div>
そして、ここではjavascriptのだが(のみ(そしてそれは私のコードを遅らせる)リフレッシュ一部:
function RefreshDrag()
{
$(".gd_selected_block").removeClass("gd_selected_block");
if(startX <= endingX)
{
var minX = startX;
var maxX = endingX;
}
else
{
var minX = endingX;
var maxX = startX;
}
if(startY <= endingY)
{
var minY = startY;
var maxY = endingY;
}
else
{
var minY = endingY;
var maxY = startY;
}
var $row = null;
var $block = null;
var $left = null;
var $right = null;
var $this = null;
var rowIndex = null;
$(".gd_grid_row").slice(minY, maxY+1).each(function() {
$row = $(this);
rowIndex = $row.index();
if(rowIndex == minY || rowIndex == maxY)
{
$row.children(".gd_grid_block").slice(minX, maxX+1).find(".gd_grid_block_wrap").each(function() {
$this = $(this);
$this.addClass("gd_selected_block");
});
}
else
{
$left = $row.children(".gd_grid_block").eq(minX).find(".gd_grid_block_wrap");
$right = $row.children(".gd_grid_block").eq(maxX).find(".gd_grid_block_wrap");
$left.addClass("gd_selected_block");
$right.addClass("gd_selected_block");
}
});
}
.gd_selected_blockはdiv要素(ラインとして機能する)のデ・背景色を変更するクラスです事前に感謝
を達成しようとしている正確に何かわからないけれども、あなたがしようとしていますドラッグアンドドロップをシミュレートするには? http://jqueryui.com/demos/droppable/ –
私の誠実な提案は全く異なるアプローチを見つけることです。個々のDIVをピクセルとして使用することは、爪楊枝からバードハウスを構築するようなものです。 – Blazemonger
あなたはそうしてはいけません。それがD&Dなら、Harveyの提案に従ってください。より一般的に高速アニメーションを作成したい場合は、SVGまたはHTML5 Canvasを使用してください。 –