So entfernen Sie alle <tr> aus einer Tabelle außer dem ersten verwenden von jquery
Ich habe eine Tabelle und die möchte ich alle entfernen <tr>
von der Tabelle mit Ausnahme der ersten. Wie kann ich das machen.?
- Ist die erste Zeile semantisch einen header? Wenn ja, kann es besser sein, ändern Sie Ihr markup ein bisschen, und es würden noch einfacher Skript.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es mehrere Methoden hier, die meisten knapp ist, verwenden Sie die
:gt()
Selektor, wie dies:Ist es eine Besondere Bedeutung, um die erste Zeile? Ich werde gehen auf ein Glied und sagen, dass die erste Zeile ist wahrscheinlich die Zeile, die die Spaltenüberschriften enthält.
Wenn ja, ist eine einfache Möglichkeit ist, die erste Zeile in einem
<thead>
und dem Körper alle Zeilen in einer<tbody>
. Dann könnte man einfach tun:Dieser bietet auch Ihrem HTML mehr semantische Bedeutung.
Ich denke, ich werde auf den Zug aufspringen und bieten einige Lösungen:
Wenn Sie
thead
für die erste Zeile, legen Sie einfach dastr
s in dertbody
:Wenn du nicht mit
thead
können Sie die nachfolgenden Reihen auf vielfältige Weise. Ich sehr empfehlen, Suche durch die jQuery apiHier sind ein paar Beispiele, wie Sie können entfernen Sie die Zeilen:
$('#myTable tr + tr').remove();
$('#myTable tr:gt(0)').remove();
$('#myTable tr:not(:first-child)').remove();
$('#myTable').find('tr').not(':first-child').remove();
$('#myTable tr:first-child').siblings().remove();
Wirklich es kommt darauf an, wie kreativ Sie wollen in Ihrem Selektoren, und was Ihre Absichten sind. Ich habe nicht eine filter-Beispiel, aber mit
filter
wird Ihnen erlauben, zu rufenend
und weiterhin die Verkettung von einem übergeordneten element.Sie haben zu tun, einige unit-tests, um zu sehen, welche der beiden Methoden die schnellsten sind, oder nicht, wenn es nicht so wichtig.
<tbody>
. Ich hatte zwar gewähren, dass das wahrscheinlich nicht der Fall.tbody
s, die Sie wahrscheinlich mit einemthead
in dem Fall das erste Beispiel wäre die beste Wahl. Guten Fang, obwohl.Diese verwendet einen voll gültigen CSS-Selektor, um alle Zeilen der Tabelle, dann dauert eine
.slice()
des Satzes beginnend mit index1
(die zweite Zeile) und schließlich Anrufe.remove()
um die Zeilen zu entfernen.Den gültigen CSS-Selektor ist wichtig, weil es erlaubt jQuery/Brutzeln erfolgreich zu nutzen, die native
querySelectorAll
Methode, die eine extrem schnelle Auswahl.querySelectorAll
unterstützt wird, in vielen Browsern, einschließlichIE8
.EDIT:
Obwohl Sie gebeten, für eine jQuery Lösung, ich dachte, ich würde werfen, der in einer systemeigenen DOM-API-Lösung, da es schneller als alles andere, und es ist wirklich ziemlich einfach.
'table :first-child ~ tr'
wird ein Gültiger Selektor, in den meisten (vielleicht allen) Fällen, obwohl es könnte technisch nicht erfüllen die Anforderungen, wenn es mehrere<tbody>
Elemente. Es wäre toll, wenn:gt()
oder:not(:first)
gültig waren-Selektoren.Beispiel:
http://jsfiddle.net/TwqN3/
$('#someTableSelector tr:not(:first)').remove();
Verwenden Sie die neben den Geschwister-Selektor:
Beispiel:
http://jsfiddle.net/TwqN3/2/
(Dank an Stefan Kendall! Ich nicht wusste, jsfiddle.)