我想清空我的表td的内容,进行加载然后显示最新提取的数据,但问题是thead似乎有一些闪烁的问题,因为当tbody数据消失时thead的宽度会受到影响。
table {
border-collapse: collapse;
}
table th,
table td {
padding: 5px;
border: 1px solid;
}
答案 0 :(得分:1)
这是正常的... display: none
元素不参与表宽度计算。您可以改为使用visibility: collapse
:
$(function() {
$('button').click(function() {
const $tb = $("tbody");
const new_visibility = $tb.css("visibility") === "visible" ? "collapse" : "visible";
$("tbody").css({
"visibility": new_visibility
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button>Toggle tbody</button>
<table border="1">
<thead>
<tr>
<th>name</th>
<th>age</th>
</tr>
</thead>
<tbody>
<tr>
<td>john wesley</td>
<td>18</td>
</tr>
</tbody>
</table>
不幸的是......当你在tbody中插入新数据时,宽度会根据内容而改变。除了使用固定的布局表之外,没有好的解决方案。
答案 1 :(得分:0)
我想我设置的这两个属性,我们将解决您的问题:
table th,
table td {
padding: 5px;
border: 1px solid;
width: 200px;
text-align: center;
}
最后两行将每个td宽度的宽度固定为您想要的值(而不是200 px,最好将其设置为百分比值以支持责任),最后一行只是将文本放在中心位置。如果按下按钮,标题单元格将不会更改。
答案 2 :(得分:0)
向您的CSS添加table th {min-width: 100px;}
之类的内容。
$(function() {
$('button').click(function() {
const tb = $('tbody').clone()
if ($(tb).length > 0) {
$('tbody').hide()
}
})
})
table {
border-collapse: collapse;
}
table th,
table td {
padding: 5px;
border: 1px solid;
}
table th {min-width: 100px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<thead>
<tr>
<th>name</th>
<th>age</th>
</tr>
</thead>
<tbody>
<tr>
<td>john wesley</td>
<td>18</td>
</tr>
</tbody>
</table>
<button>Hide tbody</button>