2012-11-08 72 views
1

我想写的是检测是否有表td s为空的脚本,如果他们隐瞒我搜索堆栈溢出,发现其他脚本,但似乎没有父trjQuery的:隐藏空表行

为我工作。

到目前为止,我有:

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

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

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

    }); 

但就是无法得到它的工作。任何意见,将不胜感激!

小提琴:http://jsfiddle.net/MeltingDog/S8CUa/1/

+0

什么是你的 “空” 的标准?这是没有文字,或没有子节点,或没有元素,只有空白,或根本没有(例如'​​')? – RobG

+0

@RobG什么都不喜欢你的例子 – MeltingDog

+0

- 所以我们只是猜测?我的例子完全是穆萨的答案。 – RobG

回答

1

.html()只返回第一个匹配元素的内容,因此,如果您行有一个以上的小区这不会工作。 .text()可能是更好的修复方法,除非在单元格中有图像或其他空标记。

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

DEMO

+0

我得到::语法错误,无法识别表达与.text() – MeltingDog

+0

@MeltingDog看到更新 – Musa

+0

啊,伟大的,多数民众赞成在工作。谢谢 – MeltingDog

4

试试这个 -

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

Demo

+0

作品类型 - 隐藏所有trs excpet第一个不管他们是否有内容 – MeltingDog

+0

@MeltingDog检查演示:) – Dipak

+0

hmm仍然没有运气....我的代码在这里http://jsfiddle.net/MeltingDog/S8CUa/1/ – MeltingDog

0
$('table tr').each(function(){ 

    var hide = true; 

    $('td',this).each(function(){ 

     if ($.trim($(this).text()) != "") 
      hide = false; 

    }); 

    if(hide) 
     $(this).closest('tr').hide(); 
     // OR $(this).closest('tr).addClass('nodisplay'); 

}); 
3

你应该试试这个。

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

看来你想隐藏只有空白内容(但单元格可能有其他元素子节点)的行。使用普通的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; 
    } 
}