我的表看起来像这样:
<table id="mytable" width="500" border="1" cellspacing="0" cellpadding="0">
<thead>
<tr>
<th>Col 1</th><th>Col 2</th><th>Col 3</th>
</tr>
</thead>
<tbody>
<tr>
<td>abc</td>
<td>abc</td>
<td></td>
</tr>
<tr>
<td>abc</td>
<td>abc</td>
<td></td>
</tr>
<tr>
<td>abc</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
如果该列的所有td
都为空,我想隐藏相应的列,否则应该显示该列。
答案 0 :(得分:2)
一种方法是循环遍历每个th
,使用其索引引用同一列中的tds
,检查它们是否全部为空,如果是,则隐藏所有该列中的th
和td
元素。
/* loop over each th */
$('th').each(function(idx, el) {
/* check every td in the same column, see if they contain any text */
var check = !! $('tr').find('td:eq(' + idx + ')').filter(function() {
return $.trim( $(this).text() ).length;
}).length;
/* toggle the display of each th and td in this column, based on the check above */
$('tr').find('td:eq(' + idx + '), th:eq(' + idx + ')').toggle( check );
});
答案 1 :(得分:0)
答案 2 :(得分:0)
试试这个
$("#mytable tbody tr").each(function (index, element) {
if ($(element).find("td").not(':empty').length == 0) {
$(element).hide();
}
});
从第4行删除4并运行
答案 3 :(得分:0)
如果您的列中包含诸如'-'
之类的特定数据,请尝试以下操作:
$('th').each(function(idx, el) {
var check = !! $('tr').find('td:eq(' + idx + ')').filter(function() {
//If your column has specific data like `'-'` try this one:
return $(this).text() != '-';
}).length;
$('tr').find('td:eq(' + idx + '), th:eq(' + idx + ')').toggle( check );
});