此方法用于基于元数据json对象的集合隐藏表中的列。表中每列有一个对象。目前在一个包含~500行和~15列且隐藏6个的表上,此方法需要大约2秒才能执行。
我正在尝试优化它以加快速度。有什么建议吗?
function hideHiddenColumns() {
if (tableMetaData.length) {
for (var index = 0; index < tableMetaData.length; index++) {
var item = tableMetaData[index];
if (!item.DisplayFlag) {
$table.find('th:nth-child(' + (index + 1) + '), td:nth-child(' + (index + 1) + ')').hide();
}
}
}
}
答案 0 :(得分:2)
我不确定$table
来自何处,但是如何使用旧的DOM而不是复杂的jQuery选择器:
$table.each( function() {
var rows = this.rows;
var rowCount = rows.length;
for (var i = 0; i < rowCount; i++) {
var cells = rows[i].cells;
if (cells.length > index) {
$(cells[index]).hide();
}
}
});
显然,这意味着表中不存在合并的单元格。
答案 1 :(得分:2)
for
优化while
循环:
var item, i = tableMetaData.length;
while (i--) {
item = tableMetaData[i];
// do what's gotta be done
}
反向while
循环曾经是迄今为止最快的循环结构。随着最近JS引擎的最新改进,差异不再那么大了,但
答案 2 :(得分:0)
以下是显示和隐藏HTML表格列的方法:jQuery - Tables - Show and Hide Columns