使用JQuery隐藏表列
问题描述:
此方法用于基于元数据json对象的集合来隐藏表中的列。表中每列有一个对象。目前在一个具有500行〜15列的表格中,其中隐藏了6个此方法需要约2秒钟才能执行。使用JQuery隐藏表列
我正试图优化它以加快速度。有什么建议么?
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();
}
}
}
}
答
我不知道在哪里$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();
}
}
});
显然,这意味着在表中不存在合并单元格。
答
与普通JS一起去,jsust像Tomalak建议的那样。您还可以while
优化for
循环:
var item, i = tableMetaData.length;
while (i--) {
item = tableMetaData[i];
// do what's gotta be done
}
曾经是迄今为止速度最快的循环结构的逆转while
循环。随着最新的JS引擎的改进,差异不再那么大了,虽然