2659 Stimmen

Tabellenzeile in jQuery hinzufügen

Was ist die beste Methode in jQuery, um eine zusätzliche Zeile zu einer Tabelle als die letzte Zeile hinzufügen?

Ist das akzeptabel?

$('#myTable').append('<tr><td>my data</td><td>more data</td></tr>');

Gibt es Beschränkungen für das, was Sie zu einer solchen Tabelle hinzufügen können (z. B. Eingaben, Auswahlen, Anzahl der Zeilen)?

4 Stimmen

Vielen Dank, Ash. Ich bin auch gerade lernen jQuery und finden es schwer, herauszufinden, den besten Weg, vor allem einfache Dinge. Der Grund, warum sie als 2 Fragen sind, ist, weil ich eine gepostet und dann fast eine Stunde später erkannte ich, dass ich die andere in gesetzt haben sollte und dachte nicht, ich sollte die erste ändern.

33 Stimmen

19 Stimmen

FYI - Vermeiden Sie die Verwendung mehrerer Anhänge (verlangsamt die Leistung enorm), sondern bauen Sie Ihre Zeichenfolge oder verwenden Sie JavaScript join, die viel schneller ist.

15voto

Oshua Punkte 141

Bei der hier geposteten besten Lösung wird die neue Zeile in die verschachtelte Tabelle anstelle der Haupttabelle eingefü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):

function add_new_row(table, rowcontent) {
    if ($(table).length > 0) {
        if ($(table + ' > tbody').length == 0) $(table).append('<tbody />');
        ($(table + ' > tr').length > 0) ? $(table).children('tbody:last').children('tr:last').append(rowcontent): $(table).children('tbody:last').append(rowcontent);
    }
}

Beispiel für die Verwendung:

add_new_row('#myTable','<tr><td>my new row</td></tr>');

13voto

Avron Olshewsky Punkte 121

Ich hatte einige ähnliche Probleme, als ich versuchte, eine Tabellenzeile nach der angeklickten Zeile einzufügen. Alles ist in Ordnung, außer dass der Aufruf .after() für die letzte Zeile nicht funktioniert.

$('#traffic tbody').find('tr.trafficBody).filter(':nth-child(' + (column + 1) + ')').after(insertedhtml);

Ich bin bei einer sehr unordentlichen Lösung gelandet:

Erstellen Sie die Tabelle wie folgt (id für jede Zeile):

<tr id="row1"> ... </tr>
<tr id="row2"> ... </tr>
<tr id="row3"> ... </tr>

usw. ...

und dann :

$('#traffic tbody').find('tr.trafficBody' + idx).after(html);

0 Stimmen

Ich denke, dies sollte eine neue Frage sein, anstatt eine Antwort auf eine bestehende Frage zu geben...

12voto

Pankaj Garg Punkte 1122
    // Create a row and append to table
    var row = $('<tr />', {})
        .appendTo("#table_id");

    // Add columns to the row. <td> properties can be given in the JSON
    $('<td />', {
        'text': 'column1'
    }).appendTo(row);

    $('<td />', {
        'text': 'column2',
        'style': 'min-width:100px;'
    }).appendTo(row);

0 Stimmen

Dies mag zwar eine Antwort sein, ist aber für einen späteren Besucher nicht sehr nützlich... Bitte fügen Sie eine Erklärung zu Ihrer Antwort hinzu.

12voto

Uzbekjon Punkte 11214

Sie können diese großartige jQuery Tabellenzeile hinzufügen Funktion. Sie funktioniert gut mit Tabellen, die Folgendes haben <tbody> und die, die es nicht tun. Außerdem wird der Spaltenabstand der letzten Tabellenzeile berücksichtigt.

Hier ist ein Anwendungsbeispiel:

// One table
addTableRow($('#myTable'));
// add table row to number of tables
addTableRow($('.myTables'));

0 Stimmen

Ich kann mir nicht vorstellen, dass das sehr nützlich ist. Es wird lediglich eine leere Tabellenzeile zu einer Tabelle hinzugefügt. Normalerweise, wenn auch nicht immer, wollen Sie eine neue Tabellenzeile mit einigen Daten hinzufügen.

1 Stimmen

Aber das ist normalerweise das, was Sie wollen. Mit dieser Funktion können Sie eine leere Zeile in eine beliebige Tabelle einfügen, unabhängig davon, wie viele Spalten und Zeilen Sie haben, wodurch sie zu einer UNIVERSAL-Funktion wird. Sie können dann zum Beispiel mit $('.tbl tr:last td') weitermachen. Der Sinn der Sache ist eine universelle Funktion!!!

0 Stimmen

Wenn Ihre Funktion auch Daten in Ihre neuen Zeilen einfügt, können Sie sie beim nächsten Projekt nicht mehr verwenden. Was soll das bringen?! Meiner Meinung nach brauchen Sie sie nicht zu teilen...

11voto

Ricky Gummadi Punkte 3094

Meine Lösung:

//Adds a new table row
$.fn.addNewRow = function (rowId) {
    $(this).find('tbody').append('<tr id="' + rowId + '"> </tr>');
};

Verwendung:

$('#Table').addNewRow(id1);

0 Stimmen

Und wenn es keine tbody in der Tabelle ? bedeutet, dass es eine Zeile direkt in der Tabelle geben kann <table> Element, auch wenn es keine Kopfzeile hat.

0 Stimmen

Ich würde sehr empfehlen, Sie haben Ihre Markup mit <TBody> so seine bis zu den HTML 5-Standards, wenn nicht, dann können Sie immer tun $(this).append('<tr id="' + rowId + '"> </tr>'); dass nur eine Zeile in der Tabelle anhängt.

0 Stimmen

Ich denke, wenn Sie gehen, um diese eine Funktion zu machen, könnten Sie vielleicht ein jQuery-Objekt für die neue Zeile zurückgeben, so dass es verkettbar ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X