Скрыть пустые ячейки в таблице
Я хочу, чтобы скрыть пустые ячейки в таблице. Вот мой код:
$(function() {
$(".empty").each(hideCellIfEmpty);
});
function hideCellIfEmpty() {
var theCell = $(this);
if (theCell.html().length == 0) {
hideSoft(theCell);
}
}
function hideSoft(jQElement) {
jqElement.css('visibility', 'hidden');
}
table.empty {
width: 350px;
border-collapse: collapse;
empty-cells: hide;
}
td.empty {
border-style: solid;
border-width: 1px;
border-color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<table class="empty">
<tr>
<th></th>
<th>Title one</th>
<th>Title two</th>
</tr>
<tr>
<th>Row Title</th>
<td class="empty">value</td>
<td class="empty">value</td>
</tr>
<tr>
<th>Row Title</th>
<td class="empty">value</td>
<td class="empty"></td>
</tr>
</table>
вы можете видеть, пустая ячейка отображается во 2-й строке. Но я хочу это скрыть. Более того, я не хочу использовать border-collapse:separate
. Можно ли скрыть пустую ячейку с помощью border-collapse:collapse
? Я также хочу знать, почему это показывает пустые клетки.
С. П., Используя border-collapse: separate
работает и не показывает пустой ячейки.
$(function() {
$(".empty").each(hideCellIfEmpty);
});
function hideCellIfEmpty() {
var theCell = $(this);
if (theCell.html().length == 0) {
hideSoft(theCell);
}
}
function hideSoft(jQElement) {
jqElement.css('visibility', 'hidden');
}
table.empty {
width: 350px;
border-collapse: separate;
empty-cells: hide;
}
td.empty {
border-style: solid;
border-width: 1px;
border-color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<table class="empty">
<tr>
<th></th>
<th>Title one</th>
<th>Title two</th>
<th>Title three</th>
</tr>
<tr>
<th>Row Title</th>
<td class="empty">value</td>
<td class="empty">value</td>
<td class="empty">value</td>
</tr>
<tr>
<th>Row Title</th>
<td class="empty">value</td>
<td class="empty"></td>
<td class="empty">value</td>
</tr>
</table>
но это не отвечает на эти вопросы:
почему пустые-ячейки отображаются, когда - это ?
почему пустые ячейки не отображаются, когда - это ?
6 ответов
если ваш сайт не требует поддержки IE 8 и ниже, вы можете просто использовать CSS :empty
псевдо-класс:
td:empty {
visibility: hidden;
}
table.empty {
width: 350px;
border-collapse: collapse;
empty-cells: hide;
}
td.empty {
border-style: solid;
border-width: 1px;
border-color: blue;
}
td:empty {
visibility: hidden;
}
<table class="empty">
<tr>
<th></th>
<th>Title one</th>
<th>Title two</th>
</tr>
<tr>
<th>Row Title</th>
<td class="empty">value</td>
<td class="empty">value</td>
</tr>
<tr>
<th>Row Title</th>
<td class="empty">value</td>
<td class="empty"></td>
</tr>
</table>
подробнее о :empty
псевдо-класс можно найти в https://developer.mozilla.org/en-US/docs/Web/CSS/:empty
при условии, что все ячейки, которые вы хотите скрыть класс .пустой () я придумал этот кусок jQuery:
$(function(){
$(".empty").each(hideCellIfEmpty);
});
function hideCellIfEmpty(){
var theCell = $(this);
if(theCell.html().length == 0){
theCell.hide();
}
}
иииииии... это, кажется, работает. :)
но как hide()
не сохраняет пространство, в которое вы сталкиваетесь проблема если вы пытаетесь сделать форму пончика.
К счастью, там другой вопрос обсуждение этой проблемы, и ответ заключается в использовании
css('visibility','hidden')
ведьма, вы также можете найти в эта скрипка.
нашел этой решение по хорошей статье, которую я читал.
Я надеюсь, что это сработает и для вас:
table {
empty-cells: hide;
}
С наилучшими пожеланиями!
попробовать следующее
<style type="text/css">
table.empty{
width:350px;
border-collapse: collapse;
empty-cells:hide;
}
td.normal{
border-style:solid;
border-width:1px;
border-color: blue;
}
td.empty{
style:'display=none'
}
</style>
<table >
<tr>
<th></th>
<th>Title one</th>
<th>Title two</th>
</tr>
<tr>
<th>Row Title</th>
<td class="normal">value</td>
<td class="normal">value</td>
</tr>
<tr>
<th>Row Title</th>
<td class="normal">value</td>
<td class="empty"></td>
</tr>
</table>
просто используется CSS:empty-cells: hide;
браузер поддерживает: Проверил Ссылку или Ссылка 2
table {
border-collapse: separate;
empty-cells: hide;
}
NB: вы не можете использовать border-collapse: collapse;
потому что это отключить посмотреть пустая ячейка скрыть
/******Call-Padding**********/
table {
/***
border-collapse: collapse; #Not use it ***/
border-collapse: separate;
empty-cells: hide;
}
td {
border: 1px solid red;
padding: 10px;
}
<table>
<tr>
<th>Head1 </th>
<th>Head2 </th>
<th>Head3 </th>
<th>Head4 </th>
</tr>
<tr>
<td>11</td>
<td>12</td>
<td>13</td>
<td>14</td>
</tr>
<tr>
<td>15</td>
<td>16</td>
<td></td>
<td>18</td>
</tr>
<tr>
<td>19</td>
<td></td>
<td>21</td>
<td>22</td>
</tr>
<tr>
<td></td>
<td>24</td>
<td>25</td>
<td>26</td>
</tr>
</table>
вот еще одно решение, так как td:empty
не работает для меня:
<style type="text/css">
table {
border-spacing: 0px; // removes spaces between empty cells
border: 1px solid black;
}
tr, td {
border-style: none; // see note below
padding: 0px; // removes spaces between empty cells
line-height: 2em; // give the text some space inside its cell
height: 0px; // set the size of empty cells to 0
}
</style>
данный код полностью удалит любое пространство, которое в противном случае заняла бы пустая строка.
К сожалению, вы должны установить border-style: none;
, иначе границы пустых ячеек будут окрашены в любом случае (что приводит к толстым линиям).