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

Hide row if it contains empty columns

本文关键字:隐藏 包含空 如果      更新时间:2023-09-26

我有一个表,它有几行,每行有两列,第一列有标题,第二列有相应的值。有时,右边的单元格可能没有值,所以只有标题是没有意义的。。没有值。。我可以隐藏右边没有值的左边单元格的标题,也可以隐藏整行本身。

我想出了这个主意,但不起作用。。

    $('.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>

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

我认为这会起作用:

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

你可以在jsFiddle上试试。

试试这个:

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

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

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

你可以试试这个:

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