我有点纠结于一种特殊的表,我想对它进行过滤并执行一些计数。
注意:所有行都是同级,但它们表示父节点、子节点和直接节点(=它们没有父节点,仅自身存在)。
无法更改表结构。。。我们必须利用现有的资源。
该表具有以下结构:
<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就是这样。
暂无答案!
目前还没有任何答案,快来回答吧!