我的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>
。
答案 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();
}
});
});
干杯! 如果我使用上面的代码,请告诉我可能出现的问题