Was ist die beste Methode in jQuery, um einer Tabelle als letzte Zeile eine zusätzliche Zeile hinzuzufügen?
Ist das akzeptabel?
$('#myTable').append('<tr><td>my data</td><td>more data</td></tr>');
Gibt es Einschränkungen für das, was Sie einer solchen Tabelle hinzufügen können (z. B. Eingaben, Auswahlen, Anzahl der Zeilen)?
javascript
jquery
html-table
Darryl Hein
quelle
quelle
Antworten:
Es ist nicht garantiert, dass der von Ihnen vorgeschlagene Ansatz Ihnen das gewünschte Ergebnis liefert - was wäre, wenn Sie
tbody
beispielsweise Folgendes hätten :Sie würden mit dem folgenden enden:
Ich würde daher stattdessen diesen Ansatz empfehlen:
Sie können alles in die
after()
Methode aufnehmen, solange es sich um gültiges HTML handelt, einschließlich mehrerer Zeilen gemäß dem obigen Beispiel.Update: Überprüfung dieser Antwort nach den letzten Aktivitäten mit dieser Frage. Augenlidlosigkeit macht einen guten Kommentar, dass es immer eine
tbody
im DOM geben wird; Dies ist wahr, aber nur, wenn mindestens eine Zeile vorhanden ist. Wenn Sie keine Zeilen haben, gibt es keine, es seitbody
denn, Sie haben selbst eine angegeben.DaRKoN_ schlägt vor , an den
tbody
Inhalt anzuhängen , anstatt ihn nach dem letzten hinzuzufügentr
. Dies umgeht das Problem, keine Zeilen zu haben, ist aber immer noch nicht kugelsicher, da Sie theoretisch mehreretbody
Elemente haben könnten und die Zeile zu jedem von ihnen hinzugefügt würde.Ich bin mir nicht sicher, ob es eine einzige einzeilige Lösung gibt, die jedes einzelne mögliche Szenario berücksichtigt. Sie müssen sicherstellen, dass der jQuery-Code mit Ihrem Markup übereinstimmt.
Ich denke, die sicherste Lösung besteht wahrscheinlich darin, sicherzustellen, dass Sie
table
immer mindestens einetbody
in Ihr Markup aufnehmen, auch wenn es keine Zeilen enthält. Auf dieser Basis können Sie Folgendes verwenden, das funktioniert, egal wie viele Zeilen Sie haben (und auch mehreretbody
Elemente berücksichtigen ):quelle
$('#myTable').find('tbody:last')
anstelle von$('#myTable > tbody:last')
.jQuery verfügt über eine integrierte Funktion zum schnellen Bearbeiten von DOM-Elementen.
Sie können Ihrer Tabelle Folgendes hinzufügen:
Die
$('<some-tag>')
Sache in jQuery ist ein Tag-Objekt, das mehrereattr
Attribute haben kann, die gesetzt und abgerufen werden können, sowietext
das den Text zwischen dem Tag hier darstellt :<tag>text</tag>
.Dies ist ein ziemlich seltsamer Einzug, aber Sie können leichter sehen, was in diesem Beispiel vor sich geht.
quelle
Seitdem @Luke Bennett diese Frage beantwortet hat, haben sich die Dinge geändert . Hier ist ein Update.
jQuery seit Version 1.4 (?) erkennt automatisch , ob das Element , das Sie einfügen wollen (unter Verwendung eines der
append()
,prepend()
,before()
oderafter()
Methoden) a<tr>
und fügt es in die erste<tbody>
in der Tabelle oder wickelt es in ein neues ,<tbody>
wenn man nicht tut existieren.Ja, Ihr Beispielcode ist akzeptabel und funktioniert gut mit jQuery 1.4+. ;)
quelle
yourString.trim()
könnte Abhilfe schaffen.Was wäre, wenn du ein
<tbody>
und ein hättest<tfoot>
?Sowie:
Dann würde es Ihre neue Zeile in die Fußzeile einfügen - nicht in den Körper.
Daher besteht die beste Lösung darin, ein
<tbody>
Tag einzuschließen und zu verwenden.append
, anstatt.after
.quelle
Ich weiß, dass Sie nach einer jQuery-Methode gefragt haben. Ich habe viel gesucht und festgestellt, dass wir es besser machen können, als JavaScript direkt mit der folgenden Funktion zu verwenden.
index
ist eine Ganzzahl, die die Position der einzufügenden Zeile angibt (beginnt bei 0). Der Wert -1 kann ebenfalls verwendet werden. Dies führt dazu, dass die neue Zeile an der letzten Position eingefügt wird.Dieser Parameter ist in Firefox und Opera erforderlich , in Internet Explorer, Chrome und Safari jedoch optional .
Wenn dieser Parameter nicht angegeben wird, wird
insertRow()
an der letzten Position in Internet Explorer und an der ersten Position in Chrome und Safari eine neue Zeile eingefügt.Es funktioniert für jede akzeptable Struktur der HTML-Tabelle.
Im folgenden Beispiel wird eine letzte Zeile eingefügt (-1 wird als Index verwendet):
Ich hoffe, es hilft.
quelle
ich empfehle
im Gegensatz zu
Die Schlüsselwörter
first
undlast
funktionieren für das erste oder letzte Tag, das gestartet und nicht geschlossen werden soll. Daher spielt sich dies bei verschachtelten Tabellen besser ab, wenn Sie nicht möchten, dass die verschachtelte Tabelle geändert wird, sondern stattdessen zur Gesamttabelle hinzugefügt werden. Zumindest habe ich das gefunden.quelle
Meiner Meinung nach ist der schnellste und klarste Weg
Hier ist Demo Fiddle
Ich kann auch eine kleine Funktion empfehlen, um mehr HTML-Änderungen vorzunehmen
Wenn Sie meinen Streicherkomponisten verwenden, können Sie dies wie folgt tun
Hier ist Demo Fiddle
quelle
tbody
, können Sie mehrere Beilagen erhalten$("SELECTOR").last()
, Ihre Tag-SammlungDies kann einfach mit der Funktion "last ()" von jQuery erfolgen.
quelle
Ich benutze diese Methode, wenn keine Zeile in der Tabelle vorhanden ist und jede Zeile ziemlich kompliziert ist.
style.css:
xxx.html
quelle
Für die beste hier veröffentlichte Lösung wird die neue Zeile anstelle der Haupttabelle zur verschachtelten Tabelle hinzugefügt, wenn sich in der letzten Zeile eine verschachtelte Tabelle befindet. Eine schnelle Lösung (unter Berücksichtigung von Tabellen mit / ohne tbody und Tabellen mit verschachtelten Tabellen):
Anwendungsbeispiel:
quelle
Ich habe es so gelöst.
Verwenden von jquery
Snippet
quelle
Ich hatte einige verwandte Probleme und versuchte, eine Tabellenzeile nach der angeklickten Zeile einzufügen. Alles ist in Ordnung, außer dass der Aufruf von .after () für die letzte Zeile nicht funktioniert.
Ich bin mit einer sehr unordentlichen Lösung gelandet:
Erstellen Sie die Tabelle wie folgt (ID für jede Zeile):
usw ...
und dann :
quelle
Sie können diese großartige jQuery- Funktion zum Hinzufügen von Tabellenzeilen verwenden. Es funktioniert gut mit Tabellen, die haben
<tbody>
und die nicht. Außerdem wird der Colspan Ihrer letzten Tabellenzeile berücksichtigt.Hier ist ein Anwendungsbeispiel:
quelle
Meine Lösung:
Verwendungszweck:
quelle
tbody
Tabelle gibt? bedeutet, dass es eine Zeile direkt innerhalb des<table>
Elements geben kann, auch wenn keine Überschrift vorhanden ist.quelle
Neils Antwort ist bei weitem die beste. Allerdings wird es sehr schnell chaotisch. Mein Vorschlag wäre, Variablen zu verwenden, um Elemente zu speichern und sie an die DOM-Hierarchie anzuhängen.
HTML
JAVASCRIPT
quelle
Schreiben Sie mit einer Javascript-Funktion
quelle
Ich fand dieses AddRow-Plugin sehr nützlich für die Verwaltung von Tabellenzeilen. Die Lösung von Luke passt jedoch am besten, wenn Sie nur eine neue Zeile hinzufügen müssen.
quelle
Hier ist ein Hacketi-Hack-Code. Ich wollte eine Zeilenvorlage in einer HTML- Seite pflegen . Die Tabellenzeilen 0 ... n werden zur Anforderungszeit gerendert, und dieses Beispiel enthält eine fest codierte Zeile und eine vereinfachte Vorlagenzeile. Die Vorlagentabelle ist ausgeblendet, und das Zeilentag muss sich in einer gültigen Tabelle befinden. Andernfalls können Browser es aus dem DOM- Baum löschen . Beim Hinzufügen einer Zeile wird der Bezeichner + 1 verwendet, und der aktuelle Wert wird im Datenattribut beibehalten. Es garantiert, dass jede Zeile eindeutige URL- Parameter erhält .
Ich habe Tests mit Internet Explorer 8, Internet Explorer 9, Firefox, Chrome, Opera, Nokia Lumia 800 , Nokia C7 (mit Symbian 3), Android Stock und Firefox Beta-Browsern durchgeführt.
PS: Ich gebe alle Credits an das jQuery-Team. Sie verdienen alles. JavaScript-Programmierung ohne jQuery - Ich möchte nicht einmal an diesen Albtraum denken.
quelle
quelle
Ich denke, ich habe in meinem Projekt getan, hier ist es:
html
js
quelle
Das ist meine Lösung
quelle
Wenn Sie eine andere Variable haben, können Sie in einem solchen
<td>
Tag darauf zugreifen .Auf diese Weise hoffe ich, dass es hilfreich wäre
quelle
Da ich auch eine Möglichkeit habe, endlich eine Zeile oder einen bestimmten Ort hinzuzufügen, denke ich, dass ich dies auch teilen sollte:
Finden Sie zuerst die Länge oder Reihen heraus:
und verwenden Sie dann den folgenden Code, um Ihre Zeile hinzuzufügen:
quelle
Um ein gutes Beispiel zum Thema hinzuzufügen, finden Sie hier eine funktionierende Lösung, wenn Sie eine Zeile an einer bestimmten Position hinzufügen müssen.
Die zusätzliche Zeile wird nach der 5. Zeile oder am Ende der Tabelle hinzugefügt, wenn weniger als 5 Zeilen vorhanden sind.
Ich habe den Inhalt in einen fertigen (versteckten) Container unter der Tabelle gestellt. Wenn Sie (oder der Designer) Änderungen vornehmen müssen, ist es nicht erforderlich, den JS zu bearbeiten.
quelle
Sie können die Fußzeilenvariable zwischenspeichern und den Zugriff auf DOM reduzieren (Hinweis: Möglicherweise ist es besser, eine gefälschte Zeile anstelle der Fußzeile zu verwenden).
quelle
fügt der ersten
TBODY
Tabelle eine neue Zeile hinzu , ohne von einerTHEAD
oder einerTFOOT
vorhandenen abhängig zu sein . (Ich habe keine Informationen gefunden, aus welcher Version von jQuery.append()
dieses Verhalten vorliegt.)Sie können es in diesen Beispielen versuchen:
In welcher Beispielzeile
a b
wird nach1 2
,3 4
im zweiten Beispiel nicht nach eingefügt . Wenn die Tabelle leer war, erstellt jQueryTBODY
eine neue Zeile.quelle
Wenn Sie das Datatable JQuery-Plugin verwenden, können Sie es versuchen.
Siehe Datatables fnAddData Datatables API
quelle
Auf einfache Weise:
quelle
Versuchen Sie dies: sehr einfache Art und Weise
quelle