我已經使用JQuery來使表中的元素可拖動。 (在此之前我從未使用JQuery)。它工作正常,但是非常慢。例如,從點擊並按住某個項目的那一刻起,光標變化的時間大約爲2秒。這是在Firefox 3.0.6上。一旦物品被拖動,當我放開鼠標按鈕時以及明顯發生掉落之間有一個較短但仍然明顯的延遲(大約半秒鐘,我估計)。如何使我的jQuery可拖動/可拖放代碼更快?
我懷疑它太慢的原因是因爲桌子很大(6列和大約100行),但在我看來它並不是很大,而且我不知道是否有什麼愚蠢的東西,這樣做會讓它變得如此緩慢。例如,我不知道每次拖動東西時,JQuery代碼是否被無意識地應用於表格中的每個元素。不過,我不知道爲什麼會這樣。
如果有幫助,這裏是我的代碼(注意我已經取出了光標調用,因爲我擔心它可能會減慢速度)。
<script type='text/javascript'>
$(document).ready
(
function()
{
$('.draggable_div').draggable
(
{
start: function(event, ui)
{
$(this).css('background-color','#ddddff');
}
}
);
$('.draggable_td').droppable
(
{
over: function(event, ui)
{
$(this).css('background-color', '#ccffcc');
},
out: function(event, ui)
{
$(this).css('background-color', null);
},
drop: function(event, ui)
{
// snip: removed code here to save space.
}
}
);
}
);
</script>
的HTML表是這樣的(如由PHP生成):
<table id='main_table' border=0>
<tr>
<th width=14.2857142857%>0</th>
<th width=14.2857142857%>1</th>
<th width=14.2857142857%>2</th>
<th width=14.2857142857%>3</th>
<th width=14.2857142857%>4</th>
<th width=14.2857142857%>5</th>
<th width=14.2857142857%>6</th>
</tr>
<tr>
<td class=draggable_td id='td:0:0:'>
<div class=draggable_div id='div:0:0:1962'>
content
</div>
</td>
<td class=draggable_td id='td:0:1:1962'>
<div class=draggable_div id='div:0:1:14482'>
content
</div>
</td>
<!-- snip: all the other cells removed for brevity -->
</tr>
<!-- snip: all the other rows removed for brevity -->
</table>
(注:它似乎並沒有在IE 7在所有的工作,所以也許我只是在做這裏的東西非常錯誤......)
這是一個有趣的建議。我可能不得不採用這種方式作爲最後的手段,但遺失樣式單元格的能力將是一個恥辱,因爲這是非常重要的反饋,可以讓用戶知道他們正在放置哪個單元格。 – Ben 2009-02-19 22:34:29
看看我的編輯。這可能值得一試。 – 2009-02-19 22:56:59