2010-08-13 4 views
5

У меня есть следующий код JavaScript:Добавление строк и столбцов в таблицу динамически с JQuery

function addRowToTable() 
{ 
    var tbl = document.getElementById('tblSample'); 
    var lastRow = tbl.rows.length; 
    // if there's no header row in the table, then iteration = lastRow + 1 
    var iteration = lastRow; 
    var row = tbl.insertRow(lastRow); 

    // left cell 
    var cellLeft = row.insertCell(0); 
    var textNode = document.createTextNode(iteration); 
    cellLeft.appendChild(textNode); 

    // right cell 
    var cellRight = row.insertCell(1); 
    var el = document.createElement('input'); 
    el.type = 'text'; 
    el.name = 'txtRow' + iteration; 
    el.id = 'txtRow' + iteration; 
    el.size = 40; 

    el.onkeypress = keyPressTest; 
    cellRight.appendChild(el); 

    // select cell 
    var cellRightSel = row.insertCell(2); 
    var sel = document.createElement('select'); 
    sel.name = 'selRow' + iteration; 
    sel.options[0] = new Option('text zero', 'value0'); 
    sel.options[1] = new Option('text one', 'value1'); 
    cellRightSel.appendChild(sel); 
} 

Как перевести это из DOM вызовы JQuery Может кто-нибудь дать пример кода?.

ответ

2

Самый простой способ - просто использовать $('#tblSample').append('<tr> ... </tr>'), вручную вводя строку html (если она постоянна). Вы также можете прочитать HTML где-то еще, более читаемый код:

$('#tblSample').append($('div#blank-row-container').html()); 
3

Может быть что-то вроде этого (но без select): http://jsfiddle.net/dVBMc/3/

UPDATE: http://jsfiddle.net/dVBMc/6/

function addRowToTable(table, cell1, cell2) { 
    var row; 
    row = "<tr><td>" + cell1 + "</td><td>" + cell2 + "</td></tr>"; 
    table.append(row); 
} 

Использование:

$(document).ready(function() { 
    $('button').click(function() { 
     addRowToTable($('table'), 'cell1 content', 'cell2 content'); 
    }); 
}); 
8

Я бы избегал использования строк HTML и продолжал создавать элементы DOM, как и раньше. JQuery делает это очень просто:

var row = $("<tr>"); 
row.append($("<td>").text("hello")); 
$("#tblSample").append(row); 

Смотрите http://api.jquery.com/jQuery/#jQuery2 для получения дополнительной информации.

Смежные вопросы