用JQuery隐藏表列

时间:2009-06-17 16:56:13

标签: jquery optimization performance

此方法用于基于元数据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();
      }
    }
  }
}

3 个答案:

答案 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)

正如Tomalak建议的那样,按照简单的JS,jsust进行。您还可以使用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