Javascript 如何制作<;tr>;不可见,如果是';s<;td>';有空的吗?

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

我有一个包含动态生成的“n”行的表。所有
可能包含数据,也可能不包含数据。如果所有的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();
    }
});
看看这个