当行仍然存在时停止删除整个 table

Stop removal of whole table when rows still exist

我有下面的代码,它做了两件事:

  1. 检查每个 table 行中的日期,如果日期是过去的,则删除该行
  2. 如果 table 中的所有日期都是过去的,则删除整个 table

但是,第二个东西不能正常工作。当 table 的所有行都有过去的日期时,而不是只删除 table,只要其中一行有过去的日期,它就会删除整个 table,甚至如果还有多行仍然包含未来的日期。

我设置了一个 Fiddle 你能看到吗? http://jsfiddle.net/g6a2nt0k 你会注意到 table... 中有两个日期,一个是过去的,一个是未来的,所以它应该仍然显示未来的日期,但它隐藏了整个 table。

$(function(){
$('.production-date').each(function(key,value){
    var currentDate = new Date();
    currentDate.setHours(0, 0, 0, 0);
    var date = new Date($(value).text());
    if(date < currentDate){
        var currenttable = $(value).parent().closest('table');
        $(value).parent().remove();
        var count = $(currenttable).children('tr').length;
        if(count<=2) { $(currenttable).remove(); }
    }
});

});

如有任何建议,我们将不胜感激。

此行返回 0:

var count = currenttable.children('tr').length;

为什么?因为浏览器在 table 的内容周围添加了一个 tbody 标记,所以实际上没有 tr 元素是 table 的 children/direct 个后代。这就是为什么 returns 0.

改成这样:

var count = currenttable.find('tr').length;