it-swarm.com.de

Fügen Sie in jQuery eine Tabellenzeile hinzu

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 zu einer solchen Tabelle hinzufügen können (wie Eingaben, Auswahlmöglichkeiten, Anzahl der Zeilen)?

2187
Darryl Hein

Der von Ihnen vorgeschlagene Ansatz kann nicht garantiert das gewünschte Ergebnis liefern. Was wäre, wenn Sie beispielsweise eine tbody hätten:

<table id="myTable">
  <tbody>
    <tr>...</tr>
    <tr>...</tr>
  </tbody>
</table>

Am Ende würden Sie folgendes haben:

<table id="myTable">
  <tbody>
    <tr>...</tr>
    <tr>...</tr>
  </tbody>
  <tr>...</tr>
</table>

Ich würde daher stattdessen diesen Ansatz empfehlen:

$('#myTable tr:last').after('<tr>...</tr><tr>...</tr>');

Sie können alles in die after()-Methode einschließen, solange es gültiger HTML-Code ist, einschließlich mehrerer Zeilen wie im obigen Beispiel.

Update: Diese Antwort wird nach der letzten Aktivität mit dieser Frage erneut aufgerufen. Augenlidlosigkeit macht einen guten Kommentar, dass es immer eine tbody im DOM geben wird; das ist wahr, aber nur wenn es mindestens eine Zeile gibt. Wenn Sie keine Zeilen haben, gibt es keine tbody, es sei denn, Sie haben selbst eine festgelegt.

DaRKoN_ schlägt vor, dass an die tbody angehängt wird, anstatt nach der letzten tr Inhalt hinzuzufügen. Dadurch wird das Problem umgangen, dass keine Zeilen vorhanden sind. Es ist jedoch nicht kugelsicher, da theoretisch mehrere tbody-Elemente vorhanden sein könnten und die Zeile zu jedem Element hinzugefügt werden würde.

Ich bin mir nicht sicher, ob es eine einzige einzeilige Lösung gibt, die alle möglichen Szenarien berücksichtigt. Sie müssen sicherstellen, dass der jQuery-Code mit Ihrer Markierung übereinstimmt.

Ich denke, die sicherste Lösung besteht wahrscheinlich darin, sicherzustellen, dass Ihre table immer mindestens eine tbody in Ihrem Markup enthält, auch wenn es keine Zeilen enthält. Auf dieser Basis können Sie Folgendes verwenden, das in der Lage ist, wie viele Zeilen Sie haben (und auch mehrere tbody-Elemente berücksichtigen):

$('#myTable > tbody:last-child').append('<tr>...</tr><tr>...</tr>');
1972
Luke Bennett

jQuery verfügt über eine integrierte Funktion zur sofortigen Bearbeitung von DOM-Elementen.

So kannst du alles zu deinem Tisch hinzufügen:

$("#tableID").find('tbody')
    .append($('<tr>')
        .append($('<td>')
            .append($('<img>')
                .attr('src', 'img.png')
                .text('Image cell')
            )
        )
    );

Das $('<some-tag>')-Ding in jQuery ist ein Tag-Objekt, das mehrere attr-Attribute haben kann, die gesetzt und abgerufen werden können, sowie text, die den Text zwischen dem Tag hier darstellt: <tag>text</tag>.

Dies ist eine ziemlich seltsame Einrückung, aber es ist einfacher für Sie zu sehen, was in diesem Beispiel vor sich geht.

726
Neil

Die Dinge haben sich also verändert, seit @Luke Bennett diese Frage beantwortet hat. Hier ist ein Update.

jQuery seit Version 1.4 (?) erkennt automatisch, ob das Element, das Sie einfügen möchten (mit einer der Methoden append() , prepend() , before() oder after() ), ein ist <tr> und fügt ihn in den ersten <tbody> in Ihrer Tabelle ein oder umschließt ihn in einen neuen <tbody>, falls noch keiner vorhanden ist. 

Ja, Ihr Beispielcode ist akzeptabel und funktioniert gut mit jQuery 1.4+. ;)

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

Was wäre, wenn Sie einen <tbody> und einen <tfoot> hätten? 

Sowie:

<table>
    <tbody>
        <tr><td>Foo</td></tr>
    </tbody>
    <tfoot>
        <tr><td>footer information</td></tr>
    </tfoot>
</table>

Dann wird Ihre neue Zeile in die Fußzeile eingefügt - nicht in den Körper.

Daher ist die beste Lösung, ein <tbody>-Tag anzugeben und .append anstelle von .after zu verwenden.

$("#myTable > tbody").append("<tr><td>row content</td></tr>");
158
ChadT

Ich weiß, Sie haben nach einer jQuery-Methode gefragt. Ich habe viel gesucht und finde, dass wir dies besser tun können, als JavaScript direkt mit der folgenden Funktion zu verwenden.

tableObject.insertRow(index)

index ist eine Ganzzahl, die die Position der einzufügenden Zeile angibt (beginnt bei 0). Der Wert von -1 kann auch verwendet werden. was dazu führt, dass die neue Zeile an der letzten Position eingefügt wird.

Dieser Parameter ist in Firefox und Opera erforderlich, aber in Internet Explorer optional, Chrome und Safari .

Wenn dieser Parameter nicht angegeben wird, fügt insertRow() eine neue Zeile an der letzten Position in Internet Explorer und an der ersten Position in Chrome und Safari ein.

Es funktioniert für jede akzeptable Struktur der HTML-Tabelle.

Das folgende Beispiel fügt eine Zeile in last ein (-1 wird als Index verwendet):

<html>
    <head>
        <script type="text/javascript">
        function displayResult()
        {
            document.getElementById("myTable").insertRow(-1).innerHTML = '<td>1</td><td>2</td>';
        }
        </script>
    </head>

    <body>       
        <table id="myTable" border="1">
            <tr>
                <td>cell 1</td>
                <td>cell 2</td>
            </tr>
            <tr>
                <td>cell 3</td>
                <td>cell 4</td>
            </tr>
        </table>
        <br />
        <button type="button" onclick="displayResult()">Insert new row</button>            
    </body>
</html>

Ich hoffe, es hilft.

56
shashwat

Ich empfehle

$('#myTable > tbody:first').append('<tr>...</tr><tr>...</tr>'); 

im Gegensatz zu 

$('#myTable > tbody:last').append('<tr>...</tr><tr>...</tr>'); 

Die Schlüsselwörter first und last gelten für das erste oder das letzte zu startende Tag, nicht für das Schließen. Daher ist dies bei verschachtelten Tabellen besser, wenn Sie nicht möchten, dass die verschachtelte Tabelle geändert wird, sondern zur Gesamttabelle hinzugefügt wird. Zumindest habe ich das gefunden.

<table id=myTable>
  <tbody id=first>
    <tr><td>
      <table id=myNestedTable>
        <tbody id=last>
        </tbody>
      </table>
    </td></tr>
  </tbody>
</table>
34
Curtor

Meiner Meinung nach ist der schnellste und klarste Weg

//Try to get tbody first with jquery children. works faster!
var tbody = $('#myTable').children('tbody');

//Then if no tbody just select your table 
var table = tbody.length ? tbody : $('#myTable');

//Add row
table.append('<tr><td>hello></td></tr>');

hier ist Demo Fiddle

Ich kann auch eine kleine Funktion empfehlen, um weitere HTML-Änderungen vorzunehmen

//Compose template string
String.prototype.compose = (function (){
var re = /\{{(.+?)\}}/g;
return function (o){
        return this.replace(re, function (_, k){
            return typeof o[k] != 'undefined' ? o[k] : '';
        });
    }
}());

Wenn Sie meinen String-Composer verwenden, können Sie dies gerne tun

var tbody = $('#myTable').children('tbody');
var table = tbody.length ? tbody : $('#myTable');
var row = '<tr>'+
    '<td>{{id}}</td>'+
    '<td>{{name}}</td>'+
    '<td>{{phone}}</td>'+
'</tr>';


//Add row
table.append(row.compose({
    'id': 3,
    'name': 'Lee',
    'phone': '123 456 789'
}));

Hier ist Demo Fiddle

31
sulest

Dies kann leicht mit der "last ()" - Funktion von jQuery durchgeführt werden.

$("#tableId").last().append("<tr><td>New row</td></tr>");
23
Nischal

Ich verwende diesen Weg, wenn es keine Zeile in der Tabelle gibt und jede Zeile ziemlich kompliziert ist.

style.css:

...
#templateRow {
  display:none;
}
...

xxx.html

...
<tr id="templateRow"> ... </tr>
...

$("#templateRow").clone().removeAttr("id").appendTo( $("#templateRow").parent() );

...
17
Dominic

Wenn Sie für die beste Lösung hier eine verschachtelte Tabelle in der letzten Zeile finden, wird die neue Zeile der verschachtelten Tabelle anstelle der Haupttabelle hinzugefügt. Eine schnelle Lösung (unter Berücksichtigung von Tabellen mit/ohne Tabellen und Tabellen mit geschachtelten 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);
    }
}

Anwendungsbeispiel:

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

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.

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

Ich bekam eine sehr unordentliche Lösung:

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);
13
Avron Olshewsky

Ich habe es so gelöst.

Jquery verwenden

$('#tab').append($('<tr>')
    .append($('<td>').append("text1"))
    .append($('<td>').append("text2"))
    .append($('<td>').append("text3"))
    .append($('<td>').append("text4"))
  )

Ausschnitt

$('#tab').append($('<tr>')
  .append($('<td>').append("text1"))
  .append($('<td>').append("text2"))
  .append($('<td>').append("text3"))
  .append($('<td>').append("text4"))
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<table id="tab">
  <tr>
    <th>Firstname</th>
    <th>Lastname</th> 
    <th>Age</th>
    <th>City</th>
  </tr>
  <tr>
    <td>Jill</td>
    <td>Smith</td> 
    <td>50</td>
    <td>New York</td>
  </tr>
</table>

12
Anton vBR

Meine Lösung:

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

Verwendungszweck:

$('#Table').addNewRow(id1);
10
Ricky G
    // 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);
10
Pankaj Garg

Sie können diese große jQuery-Funktion zum Hinzufügen von Tabellenzeilen verwenden. Es funktioniert gut mit Tabellen, die <tbody> haben und nicht. Es berücksichtigt auch das Colspan Ihrer letzten Tabellenzeile.

Hier ist ein Beispiel für eine Verwendung:

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

Neils Antwort ist bei weitem die beste. Allerdings werden die Dinge sehr schnell chaotisch. Mein Vorschlag wäre, Variablen zu verwenden, um Elemente zu speichern und an die DOM-Hierarchie anzuhängen.

HTML

<table id="tableID">
    <tbody>
    </tbody>
</table>

JAVASCRIPT

// Reference to the table body
var body = $("#tableID").find('tbody');

// Create a new row element
var row = $('<tr>');

// Create a new column element
var column = $('<td>');

// Create a new image element
var image = $('<img>');
image.attr('src', 'img.png');
image.text('Image cell');

// Append the image to the column element
column.append(image);
// Append the column to the row element
row.append(column);
// Append the row to the table body
body.append(row);
9
GabrielOshiro

Ich fand dieses AddRow Plugin sehr nützlich für die Verwaltung von Tabellenzeilen. Luke's Lösung wäre jedoch die beste Lösung, wenn Sie nur eine neue Zeile hinzufügen müssen.

8

Hier ist ein Hacketi-Hack-Code. Ich wollte eine Zeilenvorlage in einer HTML - Seite verwalten. Tabellenzeilen 0 ... n werden zur Anforderungszeit gerendert, und dieses Beispiel hat eine hartcodierte Zeile und eine vereinfachte Vorlagenzeile. Die Vorlagentabelle ist ausgeblendet, und das Zeilen-Tag muss sich in einer gültigen Tabelle befinden. Andernfalls kann es von Browsern aus der Struktur " DOM " gelöscht werden. Beim Hinzufügen einer Zeile wird der Zähler + 1-Bezeichner verwendet. 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-Standard- und Firefox-Beta-Browsern ausgeführt.

<table id="properties">
<tbody>
  <tr>
    <th>Name</th>
    <th>Value</th>
    <th>&nbsp;</th>
  </tr>
  <tr>
    <td nowrap>key1</td>
    <td><input type="text" name="property_key1" value="value1" size="70"/></td>
    <td class="data_item_options">
       <a class="buttonicon" href="javascript:deleteRow()" title="Delete row" onClick="deleteRow(this); return false;"></a>
    </td>
  </tr>
</tbody>
</table>

<table id="properties_rowtemplate" style="display:none" data-counter="0">
<tr>
 <td><input type="text" name="newproperty_name_\${counter}" value="" size="35"/></td>
 <td><input type="text" name="newproperty_value_\${counter}" value="" size="70"/></td>
 <td><a class="buttonicon" href="javascript:deleteRow()" title="Delete row" onClick="deleteRow(this); return false;"></a></td>
</tr>
</table>
<a class="action" href="javascript:addRow()" onclick="addRow('properties'); return false" title="Add new row">Add row</a><br/>
<br/>

- - - - 
// add row to html table, read html from row template
function addRow(sTableId) {
    // find destination and template tables, find first <tr>
    // in template. Wrap inner html around <tr> tags.
    // Keep track of counter to give unique field names.
    var table  = $("#"+sTableId);
    var template = $("#"+sTableId+"_rowtemplate");
    var htmlCode = "<tr>"+template.find("tr:first").html()+"</tr>";
    var id = parseInt(template.data("counter"),10)+1;
    template.data("counter", id);
    htmlCode = htmlCode.replace(/\${counter}/g, id);
    table.find("tbody:last").append(htmlCode);
}

// delete <TR> row, childElem is any element inside row
function deleteRow(childElem) {
    var row = $(childElem).closest("tr"); // find <tr> parent
    row.remove();
}

PS: Ich gebe dem jQuery-Team alle Credits. Sie verdienen alles. JavaScript-Programmierung ohne jQuery - Ich möchte nicht einmal über diesen Alptraum nachdenken.

7
Whome

Ich denke, ich habe in meinem Projekt getan, hier ist es:

html

<div class="container">
    <div class = "row">
    <div class = "span9">
        <div class = "well">
          <%= form_for (@replication) do |f| %>
    <table>
    <tr>
      <td>
          <%= f.label :SR_NO %>
      </td>
      <td>
          <%= f.text_field :sr_no , :id => "txt_RegionName" %>
      </td>
    </tr>
    <tr>
      <td>
        <%= f.label :Particular %>
      </td>
      <td>
        <%= f.text_area :particular , :id => "txt_Region" %>
      </td>
    </tr>
    <tr>
      <td>
        <%= f.label :Unit %>
      </td>
      <td>
        <%= f.text_field :unit ,:id => "txt_Regio" %>
      </td>
      </tr>
      <tr>

      <td> 
        <%= f.label :Required_Quantity %>
      </td>
      <td>
        <%= f.text_field :quantity ,:id => "txt_Regi" %>
      </td>
    </tr>
    <tr>
    <td></td>
    <td>
    <table>
    <tr><td>
    <input type="button"  name="add" id="btn_AddToList" value="add" class="btn btn-primary" />
    </td><td><input type="button"  name="Done" id="btn_AddToList1" value="Done" class="btn btn-success" />
    </td></tr>
    </table>
    </td>
    </tr>
    </table>
    <% end %>
    <table id="lst_Regions" style="width: 500px;" border= "2" class="table table-striped table-bordered table-condensed">
    <tr>
    <td>SR_NO</td>
    <td>Item Name</td>
    <td>Particular</td>
    <td>Cost</td>
    </tr>
    </table>
    <input type="button" id= "submit" value="Submit Repication"  class="btn btn-success" />
    </div>
    </div>
    </div>
</div>

js

$(document).ready(function() {     
    $('#submit').prop('disabled', true);
    $('#btn_AddToList').click(function () {
     $('#submit').prop('disabled', true);
    var val = $('#txt_RegionName').val();
    var val2 = $('#txt_Region').val();
    var val3 = $('#txt_Regio').val();
    var val4 = $('#txt_Regi').val();
    $('#lst_Regions').append('<tr><td>' + val + '</td>' + '<td>' + val2 + '</td>' + '<td>' + val3 + '</td>' + '<td>' + val4 + '</td></tr>');
    $('#txt_RegionName').val('').focus();
    $('#txt_Region').val('');
        $('#txt_Regio').val('');
        $('#txt_Regi').val('');
    $('#btn_AddToList1').click(function () {
         $('#submit').prop('disabled', false).addclass('btn btn-warning');
    });
      });
});
7
SNEH PANDYA
<tr id="tablerow"></tr>

$('#tablerow').append('<tr>...</tr><tr>...</tr>');
7
Vivek S
<table id="myTable">
  <tbody>
    <tr>...</tr>
    <tr>...</tr>
  </tbody>
  <tr>...</tr>
</table>

Schreiben Sie mit einer Javascript-Funktion

document.getElementById("myTable").insertRow(-1).innerHTML = '<tr>...</tr><tr>...</tr>';
7
Jakir Hossain
<table id=myTable>
    <tr><td></td></tr>
    <style="height=0px;" tfoot></tfoot>
</table>

Sie können die Fußzeilenvariable zwischenspeichern und den Zugriff auf DOM reduzieren.

var footer = $("#mytable tfoot")
footer.before("<tr><td></td></tr>")
6
Pavel Shkleinik

Da ich auch eine Möglichkeit habe, endlich eine Zeile oder einen bestimmten Ort hinzuzufügen, sollte ich auch folgendes mitteilen:

Zuerst die Länge oder die Reihen herausfinden:

var r=$("#content_table").length;

und fügen Sie dann die folgende Zeile hinzu:

$("#table_id").eq(r-1).after(row_html);
6
Jaid07

Um ein gutes Beispiel zum Thema hinzuzufügen, gibt es 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 eingefügt, wenn weniger als 5 Zeilen vorhanden sind.

var ninja_row = $('#banner_holder').find('tr');

if( $('#my_table tbody tr').length > 5){
    $('#my_table tbody tr').filter(':nth-child(5)').after(ninja_row);
}else{
    $('#my_table tr:last').after(ninja_row);
}

Ich habe den Inhalt in einen bereiten (versteckten) Container unter der Tabelle gestellt. Wenn Sie (oder der Designer) ändern müssen, ist es nicht erforderlich, die JS zu bearbeiten.

<table id="banner_holder" style="display:none;"> 
    <tr>
        <td colspan="3">
            <div class="wide-banner"></div>
        </td>   
    </tr> 
</table>
6
d.raev

wenn Sie eine andere Variable haben, können Sie auf diesen Tag in <td>-Tag zugreifen.

Auf diese Weise hoffe ich, dass es hilfreich wäre

var table = $('#yourTableId');
var text  = 'My Data in td';
var image = 'your/image.jpg'; 
var tr = (
  '<tr>' +
    '<td>'+ text +'</td>'+
    '<td>'+ text +'</td>'+
    '<td>'+
      '<img src="' + image + '" alt="yourImage">'+
    '</td>'+
  '</tr>'
);

$('#yourTableId').append(tr);
6
MEAbid

Auf einfache Weise:

$('#yourTableId').append('<tr><td>your data1</td><td>your data2</td><td>your data3</td></tr>');
5
vipul sorathiya
$('#myTable').append('<tr><td>my data</td><td>more data</td></tr>');

fügt der first TBODY der Tabelle eine neue Zeile hinzu, ohne von THEAD oder TFOOT 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:

<table class="t"> <!-- table with THEAD, TBODY and TFOOT -->
<thead>
  <tr><th>h1</th><th>h2</th></tr>
</thead>
<tbody>
  <tr><td>1</td><td>2</td></tr>
</tbody>
<tfoot>
  <tr><th>f1</th><th>f2</th></tr>
</tfoot>
</table><br>

<table class="t"> <!-- table with two TBODYs -->
<thead>
  <tr><th>h1</th><th>h2</th></tr>
</thead>
<tbody>
  <tr><td>1</td><td>2</td></tr>
</tbody>
<tbody>
  <tr><td>3</td><td>4</td></tr>
</tbody>
<tfoot>
  <tr><th>f1</th><th>f2</th></tr>
</tfoot>
</table><br>

<table class="t">  <!-- table without TBODY -->
<thead>
  <tr><th>h1</th><th>h2</th></tr>
</thead>
</table><br>

<table class="t">  <!-- table with TR not in TBODY  -->
  <tr><td>1</td><td>2</td></tr>
</table>
<br>
<table class="t">
</table>

<script>
$('.t').append('<tr><td>a</td><td>a</td></tr>');
</script>

In diesem Beispiel wird die a b-Zeile nach 1 2 eingefügt, im zweiten Beispiel nicht nach 3 4. Wenn die Tabelle leer war, erstellt jQuery TBODY für eine neue Zeile.

5
Alexey Pavlov

Das ist meine Lösung

$('#myTable').append('<tr><td>'+data+'</td><td>'+other data+'</td>...</tr>');
5
Daniel Ortegón

Wenn Sie das datatable JQuery-Plugin verwenden, können Sie es versuchen.

oTable = $('#tblStateFeesSetup').dataTable({
            "bScrollCollapse": true,
            "bJQueryUI": true,
            ...
            ...
            //Custom Initializations.
            });

//Data Row Template of the table.
var dataRowTemplate = {};
dataRowTemplate.InvoiceID = '';
dataRowTemplate.InvoiceDate = '';
dataRowTemplate.IsOverRide = false;
dataRowTemplate.AmountOfInvoice = '';
dataRowTemplate.DateReceived = '';
dataRowTemplate.AmountReceived = '';
dataRowTemplate.CheckNumber = '';

//Add dataRow to the table.
oTable.fnAddData(dataRowTemplate);

Siehe Datatables fnAddData Datatables API

5
Praveena M

Wenn Sie row vor dem ersten untergeordneten <tr> Hinzufügen möchten.

$("#myTable > tbody").prepend("<tr><td>my data</td><td>more data</td></tr>");

Wenn Sie row nach dem letzten untergeordneten <tr> Hinzufügen möchten.

$("#myTable > tbody").append("<tr><td>my data</td><td>more data</td></tr>");
3
Sumon Sarker

Füge eine Zeile mit JQuery hinzu:

wenn Sie die Zeile nach dem letzten Child der Tabelle - hinzufügen möchten, können Sie dies versuchen

$('#myTable tr:last').after('<tr>...</tr><tr>...</tr>');

wenn Sie die Zeile 1. Zeile der Tabelle Child hinzufügen möchten, können Sie dies versuchen

$('#myTable tr').after('<tr>...</tr><tr>...</tr>');
1
Rizo

Die obigen Antworten sind sehr hilfreich, aber wenn Schüler auf diesen Link verweisen, um Daten aus dem Formular hinzuzufügen, benötigen sie häufig ein Muster.

Ich möchte ein Beispiel beisteuern, von dem Eingaben abgerufen werden, und .after() verwenden, um tr mit der Zeichenfolge interpolation in die Tabelle einzufügen.

function add(){
  let studentname = $("input[name='studentname']").val();
  let studentmark = $("input[name='studentmark']").val();

  $('#student tr:last').after(`<tr><td>${studentname}</td><td>${studentmark}</td></tr>`);
}
function add(){
let studentname = $("input[name='studentname']").val();
let studentmark = $("input[name='studentmark']").val();

$('#student tr:last').after(`<tr><td>${studentname}</td><td>${studentmark}</td></tr>`);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<style>
table {
  font-family: arial, sans-serif;
  border-collapse: collapse;
  width: 100%;
}

td, th {
  border: 1px solid #dddddd;
  text-align: left;
  padding: 8px;
}

tr:nth-child(even) {
  background-color: #dddddd;
}
</style>
</head>
<body>
<form>
<input type='text' name='studentname' />
<input type='text' name='studentmark' />
<input type='button' onclick="add()" value="Add new" />
</form>
<table id='student'>
  <thead>
    <th>Name</th>
    <th>Mark</th>
  </thead>
</table>
</body>
</html>
1
Hien Nguyen

Versuchen Sie dies: sehr einfache Möglichkeit

$('<tr><td>3</td></tr><tr><td>4</td></tr>').appendTo("#myTable tbody");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<table id="myTable">
  <tbody>
    <tr><td>1</td></tr>
    <tr><td>2</td></tr>
  </tbody>
</table>
1
rajmobiapp

Dies könnte auch gemacht werden:

$("#myTable > tbody").html($("#myTable > tbody").html()+"<tr><td>my data</td><td>more data</td></tr>")
0
Prashant

TIPP: Das Einfügen von Zeilen in html table über innerHTML or .html() ist in einigen Browsern nicht gültig (ähnlicher IE9). Die Verwendung von .append("<tr></tr>") ist in keinem Browser ein guter Vorschlag. am besten und am schnellsten verwendet die pure javascript-Codes.

fügen Sie für diese Kombination mit jQuery nur ein neues Plugin hinzu, das dem von jQuery ähnelt:

$.fn.addRow=function(index/*-1: add to end  or  any desired index*/, cellsCount/*optional*/){
    if(this[0].tagName.toLowerCase()!="table") return null;
    var i=0, c, r = this[0].insertRow((index<0||index>this[0].rows.length)?this[0].rows.length:index);
    for(;i<cellsCount||0;i++) c = r.insertCell(); //you can use c for set its content or etc
    return $(r);
};

Und nun verwende es im ganzen Projekt ähnlich wie folgt:

var addedRow = $("#myTable").addRow(-1/*add to end*/, 2);
0
Hassan Sadeghi