没有数据时删除Complete TR

时间:2009-09-08 11:45:49

标签: jquery

我的vb.net应用程序中有以下代码:

<table cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse;" id="ctl00_ContentPlaceHolder2_FormView1" class="innerGridTable">
    <tbody>
        <tr>
            <td colspan="2">
        <tr>
            <td>
                <b>VenueID:</b>
            </td>
            <td>
                <span id="ctl00_ContentPlaceHolder2_FormView1_VenueIDLabel">3</span>
            </td>
        </tr>
        <tr>
            <td colspan="4">
                <asp:Button ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="Update" CssClass="Button" />
                <asp:Button ID="ibtnNewTrainer" runat="server" CausesValidation="False" CommandName="New" CssClass="Button" Text="New Trainer" />
                <asp:Button ID="ibtnSearchCourse" runat="server" CausesValidation="False" CommandName="Search" CssClass="Button" Text="Search Course" />
            </td>
        </tr>
            </td>
        </tr>
    </tbody>
</table>

正如您所看到的,第一个<tr>是空白的 - 只有<td colspan="2"></td>没有任何数据。当<tr>中没有像上述条件那样的数据时,我想使用Jquery删除完整的<td>

4 个答案:

答案 0 :(得分:2)

我遍历所有数据元素并设置一个标志,如果其中一个有数据。如果找不到数据,则删除该行。

$('tr').each( function() {
    var hasData = false;
    $(this).find('td').each( function() {
        if ($(this).text()) { // this is the TD here
           hasData = true;
           return false;
        }
    });
    if (!hasData) $(this).remove(); // this is the TR here
});

请注意,您可以一次检查所有TD的组合文本,但这会在第一个有任何数据的TD上短路。这可能不是一个很大的改进。另一种方式是:

if ($(this).find('td').text()) {
    $(this).remove();
}

另请注意,这不考虑空白。它们需要真正为空 - 没有换行符等。如果它们可以包含换行符,那么你需要检查只允许空格的正则表达式。

答案 1 :(得分:2)

$("table tr").each(function() {
   if ($("td:empty",this).length == $("td",this).length) {
       $(this).remove();
   }
});

答案 2 :(得分:0)

您可以检查TR的.text()是否仅包含空格,如果包含空格则删除它。

$("tr").each(function() {
   // test using regexp that the content of the tr contains only whitespace
   if (/^\s*$/.test($(this).text())) {
     // remove tr if it is "blank"
     $(this).remove();
   }
}

表单元素没有文本表示,您也可以测试任何“空”标记:

$("tr").each(function() {
   // filter our children to only not empty tags.
   // 0 of them means that all our children are empty
   if ($(this).children().filter(':not(:empty)').length == 0) {
     $(this).remove();
   }
}

答案 3 :(得分:0)

我使用下面的jquery代码解决了我的问题

$(document).ready(function() 
    { 
        $("table tr:first td[colspan=2]").each(function() {

           if (/^\s*$/.test($(this).text())) 
           {

             $(this).remove();
           }
        });
 });

干杯! 如果我使用上面的代码,请告诉我可能出现的问题