基于状态列隐藏同级,并使用jquery更新“父”同级上的同级计数

laik7k3q  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(228)

我有点纠结于一种特殊的表,我想对它进行过滤并执行一些计数。
注意:所有行都是同级,但它们表示父节点、子节点和直接节点(=它们没有父节点,仅自身存在)。
无法更改表结构。。。我们必须利用现有的资源。
该表具有以下结构:

<table class="myTable">
...
<tbody>
<TR>
 <Td>Status</Td>
 <Td>Name</Td>
</TR>
<TR class="parent">
 <Td>Parent (3=>2)</Td>
 <Td>First Parent</Td>
</TR>
<TR class="child" param="ID1">
 <Td>Active</Td>
 <Td>Child 1A</Td>
</TR>
<TR class="child" param="ID1">
 <Td>Inactive</Td>
 <Td>Child 1B</Td>
</TR>
<TR class="child" param="ID1">
 <Td>Active</Td>
 <Td>Child 1C</Td>
</TR>

<TR class="parent">
 <Td>Parent (2=>1)</Td>
 <Td>Second Parent</Td>
</TR>
<TR class="child" param="ID2">
 <Td>Active</Td>
 <Td>Child 2A</Td>
</TR>
<TR class="child" param="ID2">
 <Td>Active</Td>
 <Td>Child 2B</Td>
</TR>

<TR>
 <Td>Active</Td>
 <Td>Direct Item X</Td>
</TR>
<TR>
 <Td>Inactive</Td>
 <Td>Direct Item Y</Td>
</TR>

<TR class="parent">
 <Td>Parent (2=>0)</Td>
 <Td>Third Parent</Td>
</TR>
<TR class="child" param="ID3">
 <Td>Inactive</Td>
 <Td>Child 3A</Td>
</TR>
<TR class="child" param="ID3">
 <Td>Inactive</Td>
 <Td>Child 3B</Td>
</TR>

<TR>
 <Td>Inactive</Td>
 <Td>Direct Item Z</Td>
</TR>
...
</tbody>
</table>

行可以按任意顺序表示父项、子项或直接项。
所有子行始终直接跟随父行。当下一行中有新的父元素或直接元素时,子元素列表结束。
同一父级的所有子级都有一个id相同的参数。但是,父级行中不存在该id。如果需要,我们只能从父行之后的第一个子行中选择它。
父项包含状态列中字符串“parent”后括号中关联子项的数量。
“项目行”表示子行或直接项目行,因此没有父行。
我正在努力实现的目标:
我想隐藏状态不同于“活动”的所有项目行(子项目和直接项目)
我想更新父行括号中的子项计数,使其仅计数可见子项=状态为“活动”的子项
我想完全隐藏没有任何“活动”子级的父行
隐藏项目行很容易,因为我可以简单地做到这一点

$(".myTable > tbody > tr").not("*:contains('Active')").css("display", "none");

但我不知道如何从上面解决第2点和第3点。
更新:同样请注意,表实际上比上面概述的结构复杂得多,并且部分使用ajax更新,复杂的javascript逻辑对表进行操作,等等。因此重写整个表不是一个选项,必须通过使用jquery修改表来完成。
此外,我无法加载任何其他框架/库。jquery就是这样。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题