所有" td"如何隐藏表格列?在列中是空的?

时间:2015-09-23 12:47:47

标签: jquery html

我的表看起来像这样:

  <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都为空,我想隐藏相应的列,否则应该显示该列。

4 个答案:

答案 0 :(得分:2)

一种方法是循环遍历每个th,使用其索引引用同一列中的tds,检查它们是否全部为空,如果是,则隐藏所有该列中的thtd元素。

/* 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 );


});

Here's a fiddle

答案 1 :(得分:0)

请尝试

$("#mytable td:empty" ).hide();
$("#mytable td:not(:empty)").show();

Source

答案 2 :(得分:0)

试试这个

$("#mytable tbody tr").each(function (index, element) {
    if ($(element).find("td").not(':empty').length == 0) {
        $(element).hide();
    }
});

Fiddle

从第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 );
    });