我正在开发一个具有严格业务要求的应用程序,以显示一个最多 60 行和最多 50 列的 html 表。
理想情况下,用户可以选择单个表格单元格,或者单击并拖动以选择多个单元格。
我的问题是我目前仅限于使用 IE6,而且我一直很难找到(或编码)一种方法来允许在这么多单元格上进行这种选择而不会严重降低性能。
我目前的方法看起来基本上是这样的:
$(document).ready(function() {
var selecting = false;
var colStart, rowStart;
var tableContainer = $("#tableContainer")
tableContainer.delegate("td", "mousedown", function() {
//Clear Selection
tableContainer.find("td.selected").removeClass("selected");
$(this).addClass("selected");
colStart = $(this).index();
rowStart = $(this).parents("tr").index();
selecting = true;
}).delegate("td", "mouseover", function() {
if (selecting) {
//Clear Selection
tableContainer.find("td.selected").removeClass("selected");
var theCell = $(this);
// Get the row and column numbers of the current cell
var colEnd = theCell.index();
var rowEnd = theCell.parents("tr").index();
// Account for rowEnd being smaller than rowStart
var rowSliceStart = Math.min(rowStart, rowEnd);
var rowSliceEnd = Math.max(rowStart, rowEnd);
tableContainer.find("tr").slice(rowSliceStart, rowSliceEnd + 1).each(function() {
var colSliceStart = Math.min(colStart, colEnd);
var colSliceEnd = Math.max(colStart, colEnd);
// Add the required class to the children
$(this).children().slice(colSliceStart, colSliceEnd + 1).addClass("selected");
});
}
}).delegate("td", "mouseup", function() {
selecting = false;
});
});
有人对提高此功能性能的方法有任何建议吗?我相信类的添加/删除占用了大部分的性能开销,所以我特别希望在那里找到效率。