Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery:隐藏空表行_Javascript_Jquery_Html_Html Table_Tablerow - Fatal编程技术网

Javascript Jquery:隐藏空表行

Javascript Jquery:隐藏空表行,javascript,jquery,html,html-table,tablerow,Javascript,Jquery,Html,Html Table,Tablerow,我试图编写一个脚本,检测表tds是否为空,以及它们是否为隐藏父表tr 我搜索了Stack Overflow并找到了其他脚本,但似乎没有一个适合我 到目前为止,我已经: $(".table tr").each(function() { var cell = $(this).find('td').html(); if (cell == null){ console.log('empty'); $(

我试图编写一个脚本,检测表
td
s是否为空,以及它们是否为隐藏父表
tr

我搜索了Stack Overflow并找到了其他脚本,但似乎没有一个适合我

到目前为止,我已经:

$(".table tr").each(function() {                           

    var cell = $(this).find('td').html();       

    if (cell == null){
    console.log('empty');
    $(this).parent().addClass('nodisplay');
    }

    });
但就是不能让它工作。任何建议都将不胜感激

小提琴:试试这个-

$("table tr td").each(function() {                               
    var cell = $(this);           
    if ($(cell).text().length == 0){
        console.log('empty');
        $(this).parent().addClass('nodisplay');
    }    
});

只返回第一个匹配元素的内容,因此,如果您的行有多个单元格,这将不起作用。可能是更好的修复方法,除非单元格中有图像或其他空标记

$("table tr").each(function() {        
    var cell = $.trim($(this).find('td').text());
    if (cell.length == 0){
        console.log('empty');
        $(this).addClass('nodisplay');
    }                   
});
你应该试试这个

jQuery(document).ready(function(e) {
    jQuery(jQuery('table tr td:empty').parents('tr')).addClass('nodisplay');
});

似乎您想要隐藏只有空白内容的行(但单元格可能有其他元素子节点)。使用纯javascript:

var rows = document.getElementsByTagName('tr');
var i = rows.length;
while (i--) {
  if ( !trim(getText(rows[i])) ) {
    rows[i].className += ' nodisplay';
  }
} 
助手:

function trim(s) {
  return s.replace(/(^\s*)|(\s*$)/g, '');
}

function getText(el) {
  if (typeof el.textContent == 'string') {
    return el.textContent;
  } else if (typeof el.innerText == 'string') {
    return el.innerText;
  }
} 

如果表没有行,则使用jquery隐藏表

$('.tblClass').each(function(){
    if($(this).find('.rows').length == 0){
        $(this).hide();
    }
});

工作种类-隐藏所有trs,不管它们是否有content@MeltingDog查看演示:)抱歉,但是在您发送的小提琴上,如果添加边框,您仍然可以看到另一个TDS,您的“空”标准是什么?是没有文本,或者没有子节点,或者没有元素,只有空格,还是什么都没有(例如,
)?@RobG一点也不像你的例子,所以我们只是猜测一下?我的例子和穆萨的答案完全一样。
$('.tblClass').each(function(){
    if($(this).find('.rows').length == 0){
        $(this).hide();
    }
});