当行仍然存在时停止删除整个 table
Stop removal of whole table when rows still exist
我有下面的代码,它做了两件事:
- 检查每个 table 行中的日期,如果日期是过去的,则删除该行
- 如果 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;
我有下面的代码,它做了两件事:
- 检查每个 table 行中的日期,如果日期是过去的,则删除该行
- 如果 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;