如果行包含空列,则隐藏行

时间:2012-01-23 21:25:51

标签: javascript jquery html-table row cell

我有一个包含几行的表,每行有两列,第一列将保持标题,第二列将具有相应的值。有时,右边的单元格可能没有值,所以它不具有有意义只有标题..没有价值..我可以隐藏左边单元格上的标题,右边或整行本身都没有值。

我已经想出了这个但它不起作用..

    $('.EventDetail tr').each(function(){      
        if(!$('td:not(:empty)',this).length)         
        $(this).hide();
}); 

这是表格。我想知道标签是否有任何区别。或者其中一个有一个类而另一个没有...应该导致它不起作用?

<table cellpadding="10" class ="EventDetail">
    <tr>
        <td class="TableFields"><em>Who Should Enroll?:</em></td>
        <td>Everyone 18 and older who would like to attend</td>
    </tr>       
    <tr>
        <td class="TableFields"><em>Handicapped Access:</em></td>
        <td>Yes</td>
    </tr>
    <tr>
        <td class="TableFields"><em>Parking Notes:</em></td>
        <td></td>
    </tr>
    <tr>
        <td class="TableFields"><em>Instructor:</em></td>
        <td>John Filler</td>
    </tr>
</table>

所以没有停车记录信息,所以我想隐藏包含标题“停车笔记”的左侧单元格。

4 个答案:

答案 0 :(得分:3)

我认为这会奏效:

$('.EventDetail tr').has('td:nth-child(2):empty').hide()

您可以在jsFiddle上尝试。

答案 1 :(得分:0)

试试这个:

$('.EventDetail tr').each(function(){      
    if ($('td:empty',this).length > 0))
    $(this).hide();
});

答案 2 :(得分:0)

您的选择器将导致if语句对于示例中的任何行永远不会为true。 $("td:not(:empty)")始终选择带有标题的<td>元素,因此长度始终为1if(!1)永远不会成真。

您应该删除双重否定(!:not)以使其更清晰,然后检查长度(即匹配元素的数量)是否为> 0。< / p>

答案 3 :(得分:0)

你可以试试这个:

    $(document).ready(function(){
    $('.EventDetail tr').each(function(){      
        if ( $(this).children().not('.TableFields').text().length == 0 )
            $(this).hide();
    }); 
});