Add table row in jQuery

前端 未结 30 2269
既然无缘
既然无缘 2020-11-21 05:40

What is the best method in jQuery to add an additional row to a table as the last row?

Is this acceptable?

$(\'#myTable\').append(\'

        
相关标签:
30条回答
  • 2020-11-21 06:09

    I found this AddRow plugin quite useful for managing table rows. Though, Luke's solution would be the best fit if you just need to add a new row.

    0 讨论(0)
  • 2020-11-21 06:10

    jQuery has a built-in facility to manipulate DOM elements on the fly.

    You can add anything to your table like this:

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

    The $('<some-tag>') thing in jQuery is a tag object that can have several attr attributes that can be set and get, as well as text, which represents the text between the tag here: <tag>text</tag>.

    This is some pretty weird indenting, but it's easier for you to see what's going on in this example.

    0 讨论(0)
  • 2020-11-21 06:11

    I know you have asked for a jQuery method. I looked a lot and find that we can do it in a better way than using JavaScript directly by the following function.

    tableObject.insertRow(index)
    

    index is an integer that specifies the position of the row to insert (starts at 0). The value of -1 can also be used; which result in that the new row will be inserted at the last position.

    This parameter is required in Firefox and Opera, but it is optional in Internet Explorer, Chrome and Safari.

    If this parameter is omitted, insertRow() inserts a new row at the last position in Internet Explorer and at the first position in Chrome and Safari.

    It will work for every acceptable structure of HTML table.

    The following example will insert a row in last (-1 is used as index):

    <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>
    

    I hope it helps.

    0 讨论(0)
  • 2020-11-21 06:11

    Try this : very simple way

    $('<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>

    0 讨论(0)
  • 2020-11-21 06:13
    $('#myTable').append('<tr><td>my data</td><td>more data</td></tr>');
    

    will add a new row to the first TBODY of the table, without depending of any THEAD or TFOOT present. (I didn't find information from which version of jQuery .append() this behavior is present.)

    You may try it in these examples:

    <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 which example a b row is inserted after 1 2, not after 3 4 in second example. If the table were empty, jQuery creates TBODY for a new row.

    0 讨论(0)
  • 2020-11-21 06:13

    If you are using Datatable JQuery plugin you can try.

    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);
    

    Refer Datatables fnAddData Datatables API

    0 讨论(0)
提交回复
热议问题