删除/隐藏表的空列,包括

如何隐藏包含所有空单元格的列,包括该列中的标题

,同时保留其他列及其标题。 以下jquery隐藏了整个

,这不是我想要的。 这是一个示例,我想隐藏整个’Column3’,包括

。 提前谢谢了。

 $('table#mytable tr').each(function() { if ($(this).children('td:empty').length === $(this).children('td').length) { $(this).hide(); } }); 

花了一段时间拼凑起来。 感谢nxt的一些代码。

 $('#mytable th').each(function(i) { var remove = 0; var tds = $(this).parents('table').find('tr td:nth-child(' + (i + 1) + ')') tds.each(function(j) { if (this.innerHTML == '') remove++; }); if (remove == ($('#mytable tr').length - 1)) { $(this).hide(); tds.hide(); } }); 

如果要隐藏列,如果所有单元格(忽略标题)都为空,则可以执行以下操作:

 $('#mytable tr th').each(function(i) { //select all tds in this column var tds = $(this).parents('table') .find('tr td:nth-child(' + (i + 1) + ')'); //check if all the cells in this column are empty if(tds.length == tds.filter(':empty').length) { //hide header $(this).hide(); //hide cells tds.hide(); } }); 

示例: http : //jsfiddle.net/DeQHs/

示例2(适用于jQuery> 1.7): http : //jsfiddle.net/mkginfo/mhgtmc05/

http://jsfiddle.net/nlovatt/JsLn8/

一个多表示例,它避免在选择器中使用表id

这里没有一个解决方案适合我。 这就是我用来隐藏标题中有或没有文本的空列:

  $('table').each(function(a, tbl) { var currentTableRows = $(tbl).find('tbody tr').length; $(tbl).find('th').each(function(i) { var remove = 0; var currentTable = $(this).parents('table'); var tds = currentTable.find('tr td:nth-child(' + (i + 1) + ')'); tds.each(function(j) { if ($(this).text().trim() === '') remove++; }); if (remove == currentTableRows) { $(this).hide(); tds.hide(); } }); }); 

你需要下一个代码:

HTML

 
Column1Column2Column3Column4
1st1.11
2nd2.012
3rd3.0013
4th4.014

JavaScript的

 var $table = $('#mytable'); var thead = $table[0].tHead, tbody = $table[0].tBodies[0]; var colsLen = tbody.rows[0].cells.length, rowsLen = tbody.rows.length; var hideNode = function(node) { if (node) node.style.display = "none"; }; for (var j = 0; j < colsLen; ++j) { var counter = 0; for (var i = 0; i < rowsLen; ++i) { if (tbody.rows[i].cells[j].childNodes.length == 0) ++counter; } if (counter == rowsLen) { for (var i = 0; i < rowsLen; ++i) { hideNode(tbody.rows[i].cells[j]); } hideNode(thead.rows[0].cells[j]); } } 

如果表数据来自MySQL查询,则可以通过对字段使用count来validation列是否为空(count = 0表示没有值)。

当你有很多字段时,它非常讲究,并且相应的页眉和页脚单元也需要IF条件。 但它有效……

 if ($sum_field>'0') echo "field"; if ($sum_field>'0') echo "" . $row['field'] . ""; 

@nmat解决方案工作正常,但不处理页脚。