Ausblenden leerer Zellen in der Tabelle
Möchte ich ausblenden von leeren Zellen in der Tabelle. Hier ist mein code:
JS:
$(function() {
$(".empty").each(hideCellIfEmpty);
});
function hideCellIfEmpty() {
var theCell = $(this);
if (theCell.html().length == 0) {
hideSoft(theCell);
}
}
function hideSoft(jQElement) {
jqElement.css('visibility', 'hidden');
}
CSS:
table.empty {
width: 350px;
border-collapse: collapse;
empty-cells: hide;
}
td.empty {
border-style: solid;
border-width: 1px;
border-color: blue;
}
HTML:
<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>
Können Sie sehen, leere Zelle gezeigt in der 2. Reihe. Aber ich möchte, um es zu verstecken. Außerdem möchte ich nicht verwenden border-collapse:separate
. Ist dies möglich zu verbergen die leere Zelle mit border-collapse:collapse
? Außerdem möchte ich wissen, warum dies so ist, zeigen die leeren Zellen.
P. S. Mit border-collapse: separate
arbeitet und nicht leere Zellen anzeigen.
JS:
$(function() {
$(".empty").each(hideCellIfEmpty);
});
function hideCellIfEmpty() {
var theCell = $(this);
if (theCell.html().length == 0) {
hideSoft(theCell);
}
}
function hideSoft(jQElement) {
jqElement.css('visibility', 'hidden');
}
CSS:
table.empty {
width: 350px;
border-collapse: separate;
empty-cells: hide;
}
td.empty {
border-style: solid;
border-width: 1px;
border-color: blue;
}
HTML:
<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>
Aber das bedeutet nicht, diese Fragen zu beantworten:
-
Warum leere Zellen werden angezeigt, wenn
border-collapse: collapse
verwendet wird ? -
Warum leere Zelle nicht angezeigt, wenn
border-collapse: separate
verwendet wird ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Ihre Website erfordert keine Unterstützung für den IE 8 und unter, Sie könnte verwenden Sie einfach die CSS -
:empty
pseudo-Klasse:CSS:
HTML:
Mehr über die
:empty
pseudo-Klasse finden Sie unter https://developer.mozilla.org/en-US/docs/Web/CSS/:emptyth
und nichttd
- zumindest in meinem Fall, veränderttd
zuth
wurde besser.Vorausgesetzt, alle Zelle, die Sie ausblenden möchten, haben Sie die Klasse .empty() kam ich mit diesem Teil von jQuery:
uuuuund... es scheint zu funktionieren. 🙂
Jedoch als
hide()
nicht Platz sparen Sie in dieses problem, wenn Sie versuchen, eine donut-Form.Zum Glück gibt es ist eine andere Frage diskutieren diese Problematik und die Antwort ist die Verwendung
Hexe, die Sie auch in diese Geige.
Fand ich diese Lösung auf einen guten Artikel Las ich.
Ich hoffe, es wird auch für Sie arbeiten:
Beste Grüße!
Versuchen der
td
Klasse als gut. Wenn Sie tun, dass Sie in zwei verschiedenen stellen im code (was Sie nicht sollte), können Sie noch überprüfen Sie den Wert im inneren der Zelle mithilfe von JS und ändern Sie die Klasse von dertd
beziehungsweise. Überborder-collapse
, es stellt nur die Grenze für eine einzelne Zeile.td
überschreiben der Eigenschaften vontable
daher der Ränder wird angezeigt.Nur CSS:
empty-cells: hide;
Browser unterstützt: Verifiziert Link oder Link 2
NB: Sie nicht verwenden können
border-collapse: collapse;
weil es Deaktivieren Aussehen leere Zelle ausblendenCSS:
HTML:
Hier ist eine andere Lösung eignet sich auch, da
td:empty
hat bei mir nicht funktioniert:Den angegebenen code vollständig zu entfernen wird jedem Raum eine leere Zeile, sonst in Anspruch nehmen.
Leider müssen Sie
border-style: none;
, sonst die Grenzen der leeren Zellen, die lackiert werden sowieso (die Ergebnisse in Dicke Linien).