【发布时间】:2014-01-30 18:56:01
【问题描述】:
我有一个表格,我想在每行下方添加一个可隐藏/可显示的面板,以获得比表格行合理容纳的更多控件和信息。我的第一个想法是为每个原始 tr 设置一个兄弟 tr,并在其中放置一个带有适当 colspan 的 td:
<tbody>
<tr>
<td>...</td>
...
<tr>
<tr class="tablesorter-childRow">
<td colspan="4">...</td>
</tr>
...
</tbody>
每个原始行都会有一个按钮来隐藏()或显示()对应的 tr,而子行中的 td 将有所有不需要正常看到的额外控件。
这很棘手,因为我使用 d3 来构建表格,而 d3 不喜欢每个数据有多个元素(请参阅 this stack post 和 this other thing)。
这也很棘手,因为我使用的是tablesorter,它使用 tds 中的值对表客户端进行排序,因此原始数据必须保持表格式。 (它可以使用 css 类“tablesorter-childRow”将成对的行保持在一起。)我也不相信我可以有多个 tbodies,因为它们没有与行一起排序——每个 tbody 的行都是排序的。
我想过之后使用 jquery 在每个原始 tr 之后插入一个 tr,但是当某些事情发生变化时 d3 不会正确更新表(因为数据不会正确连接),以及我使用 d3 的原因是因为它使构建大量 dom 元素变得更容易(至少对我而言)。
那么,提问时间:我还能如何创建这个面板
- 随着原始表格行移动
- 不影响排序
- 可以隐藏还是显示?
【问题讨论】:
标签: javascript jquery html d3.js