Javascript 如何制作<;tr>;不可见,如果是';s<;td>';有空的吗?
我有一个包含动态生成的“n”行的表。所有Javascript 如何制作<;tr>;不可见,如果是';s<;td>';有空的吗?,javascript,jquery,dom,Javascript,Jquery,Dom,我有一个包含动态生成的“n”行的表。所有可能包含数据,也可能不包含数据。如果所有的td都为空,我想隐藏或删除“” 我不知道如何解析所有的,并确保它是否为空 示例表如下: <table id='ex_table'> <tr> <td>one</td> <td>two</td> </tr> <tr> <td></td> <t
可能包含数据,也可能不包含数据。如果所有的td都为空,我想隐藏或删除“
”
我不知道如何解析所有的
,并确保它是否为空
示例表如下:
<table id='ex_table'>
<tr>
<td>one</td>
<td>two</td>
</tr>
<tr>
<td></td>
<td>one</td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
</table>
一
二
一
在上表中,最后一行需要隐藏,因为它的
都是空的。我更喜欢jquery这样做 您实际上不必检查td
元素。您可以选择行并使用以筛选出包含文本内容的行,即仅保留为空的行:
$('#ex_table tr').filter(function() {
return $.trim($(this).text()) === '';
}).hide(); // or .remove()
这是因为.text
获取所有子体的组合内部文本,并且$。trim
删除可能由于HTML格式(但实际上不是内容)而出现的空白字符
如果您的单元格包含HTML元素,但没有文本内容(例如,通过CSS设置的图标),并且您希望保留这些内容,那么您实际上必须测试单元格是否包含HTML。该方法基本上与测试文本内容相同
$('#ex_table tr').filter(function() {
return $(this).children().filter(function() {
return $.trim($(this).html()) !== '';
}).length === 0;
}).hide();
只是这次我们计算了一行中包含HTML的单元格数。如果没有,则认为该行为空。请尝试以下操作:
$('#ex_table tr').each(function){
if($(this).text()==''){
$(this).remove();
}
}
试试这样的
$(function(){
$('#ex_table tr').each(function(){
var val = $(this).text().trim();
if(val == ''){
$(this).remove();
}
})
})
你说什么 编辑:我会用菲利克斯的答案。。如果要删除元素,只需将“.hide()”更改为“.remove()”
$('tr').each(function(){
var hasValue = false;
$(this).children().each(function(){
if ($(this).html() != "")
hasValue = true;
});
if (!hasValue)
$(this).remove();
});
试试这个代码
var hide;
$("tbody").find("tr").each(function(){
hide=true;
$(this).find("td").each(function(){
if($(this).html()!='') {
hide=false;
}
});
if(hide==true) {
$(this).hide();
}
});
看看这个