如何创建部分扩展/折叠的html表?

时间:2016-06-02 16:57:55

标签: javascript jquery html css html-table

我正在努力改进我们目前拥有的旧学校“Top Screens”页面。它显示了普通旧html表中的前30个。我希望能够生成前100名的表格,但只显示页面加载的前20名,然后有一个展开/折叠按钮。我已经找到了很多完全扩展和折叠表和子表的例子,但我还没有找到一个像我需要的那样部分地做一个例子。

它目前是一个非常简单的2列表,带有标题和最小的CSS样式和JS。如果可能的话,我想把它保存到普通的JS中,但我确实可以使用JQuery库,我对它不是很熟悉。

任何帮助将不胜感激。 提前谢谢!

修改

我为JQuery最终成为一个相对简单的解决方案道歉,但我对它很新。在阅读了API文档之后,我发现了:gt()选择器,当与toggle()结合使用时,我会为任何可能感兴趣的人添加一个优雅的解决方案。

我将“崩溃”类添加到我的< tbody>所以< thead>不会受到影响或计算。

// Hide extra rows on load.
$(document).ready(function() {
    $(".collapse").find('tr:gt(19)').hide();
});

// Toggle extra rows on click.
$(".collapse").click(function(){
    $(this).find('tr:gt(19)').toggle();
});

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用jQuery,因为你可以使用.toggle()方法。

在我的示例中,我选择仅显示前3个结果,因此代码不会太长。

在代码中查看我的评论以了解正在发生的事情。

$(document).ready(function() {
  $("button#sh").click(function() {
    $("tr.row:nth-child(n+5)").toggle();
  });
});

//Here jQuery listens for a click on the button with id "sh", and when clicked, 
//either shows or hides the rows selected by the CSS selector, which is the same as 
//the one that hid the rows in the CSS section.
tr.row:nth-child(n+5) {
  display: none
}
/* Here all rows after the 4th one will be hidden on load. So you have 1 row for the 
header, then 3 rows of data, 3+1=4, so row 5 and on will be hidden. */
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- Here jQuery is included -->

<button id="sh">Show/Hide</button>
<!-- Here the button that will show and hide the rows is set. -->

<table border="1">
  <tr class="row">
    <td>Name</td>
    <td>Number</td>
  </tr>
  <tr class="row">
    <td>Name 1</td>
    <td>1</td>
  </tr>
  <tr class="row">
    <td>Name 2</td>
    <td>2</td>
  </tr>
  <tr class="row">
    <td>Name 3</td>
    <td>3</td>
  </tr>
  <tr class="row">
    <td>Name 4</td>
    <td>4</td>
  </tr>
  <tr class="row">
    <td>Name 5</td>
    <td>5</td>
  </tr>
  <tr class="row">
    <td>Name 6</td>
    <td>6</td>
  </tr>
</table>