Add table row in jQuery

前端 未结 30 2254
既然无缘
既然无缘 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:25

    In a simple way:

    $('#yourTableId').append('<tr><td>your data1</td><td>your data2</td><td>your data3</td></tr>');
    
    0 讨论(0)
  • 2020-11-21 06:27

    I solved it this way.

    Using jquery

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

    Snippet

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

    0 讨论(0)
  • 2020-11-21 06:27
    <table id="myTable">
      <tbody>
        <tr>...</tr>
        <tr>...</tr>
      </tbody>
      <tr>...</tr>
    </table>
    

    Write with a javascript function

    document.getElementById("myTable").insertRow(-1).innerHTML = '<tr>...</tr><tr>...</tr>';
    
    0 讨论(0)
  • 2020-11-21 06:27

    Here is some hacketi hack code. I wanted to maintain a row template in an HTML page. Table rows 0...n are rendered at request time, and this example has one hardcoded row and a simplified template row. The template table is hidden, and the row tag must be within a valid table or browsers may drop it from the DOM tree. Adding a row uses counter+1 identifier, and the current value is maintained in the data attribute. It guarantees each row gets unique URL parameters.

    I have run tests on Internet Explorer 8, Internet Explorer 9, Firefox, Chrome, Opera, Nokia Lumia 800, Nokia C7 (with Symbian 3), Android stock and Firefox beta browsers.

    <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: I give all credits to the jQuery team; they deserve everything. JavaScript programming without jQuery - I don't even want think about that nightmare.

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

    As i have also got a way too add row at last or any specific place so i think i should also share this:

    First find out the length or rows:

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

    and then use below code to add your row:

    $("#table_id").eq(r-1).after(row_html);
    
    0 讨论(0)
  • 2020-11-21 06:28

    For the best solution posted here, if there's a nested table on the last row, the new row will be added to the nested table instead of the main table. A quick solution (considering tables with/without tbody and tables with nested tables):

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

    Usage example:

    add_new_row('#myTable','<tr><td>my new row</td></tr>');
    
    0 讨论(0)
提交回复
热议问题