我有一个带有一个标题和列的表,并且我根据以下代码单击标题来展开/折叠:
$(this).toggleClass('expand').nextUntil('tr.header').slideToggle(100);
我的桌子在下面:
我需要的是。当我第一次单击时,它应该折叠并仅显示第一列,这意味着其他包含data1的列应隐藏如下:
它应该显示 + 按钮,当我再次单击它时,它应该回到以前的状态。
请注意小提琴:Fiddle
答案 0 :(得分:1)
使用:
$(this).toggleClass('expand').next('tr').find('td').not('td:first')
排除第一个td
。
$(this).toggleClass('expand').nextAll('tr').find('td').not('td:first-child').slideToggle(100);
$('.header').click(function() {
$(this).toggleClass('expand').nextAll('tr').find('td').not('td:first-child').slideToggle(100);
});
table,
tr,
td,
th {
border: 1px solid black;
border-collapse: collapse;
}
tr.header {
cursor: pointer;
}
.header .sign:after {
content: "+";
display: inline-block;
}
.header.expand .sign:after {
content: "-";
}
<table border="0">
<tr class="header expand">
<th colspan="4">Header <span class="sign"></span></th>
</tr>
<tr>
<td>data1</td>
<td>data2</td>
<td>data3</td>
<td>data4</td>
</tr>
<tr>
<td>data1</td>
<td>data2</td>
<td>data3</td>
<td>data4</td>
</tr>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>