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

时间:2016-10-06 15:41:40

标签: jquery removeall

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

  1. 检查每个表格行中的日期,如果日期是过去的话,则删除该行
  2. 如果表格中的所有日期都已过去,请删除整个表格
  3. 然而,第二件事情不正常。当表的所有行都具有过去的日期时,不是仅仅删除表,只要一行具有过去的日期,它就会删除整个表,即使将来仍有多行仍有日期。

    我已经设置了一个小提琴,所以你能看到这个。 http://jsfiddle.net/g6a2nt0k你会注意到表中有两个日期...一个在过去,一个在将来,所以它应该仍然显示未来的那个,但它隐藏了整个表。

    $(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(); }
        }
    });
    

    });

    任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:3)

此行返回0:

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

为什么呢?因为浏览器在表的内容周围添加了tbody标记,所以实际上没有tr元素是表的子/直接后代。这就是为什么它返回0。

将其更改为:

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