jQuery添加HTML表列

Man*_*era 20 html jquery html-table

我有一个像这样的HTML表格:

<table border="1">
    <tbody>
        <tr>
            <td><a href="#" class="delete">DELETE ROW</a>COL 1</td>
            <td><a href="#" class="delete">DELETE COL</a>COL 2</td>
            <td><a href="#" class="delete">DELETE COL</a>COL 3</td>
            <td><a href="#" class="delete">DELETE COL</a>COL 4</td>
            <td><a href="#" class="delete">DELETE COL</a>COL 5</td>
            <td><a href="#" class="delete">DELETE COL</a>COL 6</td>
        </tr>
        <tr>
            <td>ROW 1</td>
            <td>ROW 1</td>
            <td>ROW 1</td>
            <td>ROW 1</td>
            <td>ROW 1</td>
            <td>ROW 1</td>
        </tr>
        <tr>
            <td>ROW 2</td>
            <td>ROW 2</td>
            <td>ROW 2</td>
            <td>ROW 2</td>
            <td>ROW 2</td>
            <td>ROW 2</td>
        </tr>
    </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

我需要的是一个函数来添加一个基于其他列的td的新列.问题是在这个HTML表中,在添加新列之前使用jQuery删除列,因此函数需要获取当前列配置并相应地进行调整,因为行和列总是被删除或添加.

我有这个代码用于添加新列但它不添加标题:

function addACol() {
    var currentNumberOfTDsInARow = $('.tblModel tr:first td').length;
    newColNum = currentNumberOfTDsInARow;
    var rows = $('.tblModel tbody tr');
    for (var i = 0; i < rows.length; i++) {
        var lastTDClone = $(rows[i]).find('td:last').clone();
        $(rows[i]).find('td:last').after(lastTDClone);
    }
}
Run Code Online (Sandbox Code Playgroud)

Sam*_*son 43

更新中...

var c = $("#myTable tr:first td").length;
$("#myTable tr:first").append("<td><a href=''>Delete</a> Col "+(c+1)+"</td>");
$("#myTable tr:gt(0)").append("<td>Col</td>");
Run Code Online (Sandbox Code Playgroud)

如果您需要修改标题中的编号,可以使用我们在上一个问题中处理的功能.

原始答案......

$("#myTable tr").append("<td>New Column</td>");
Run Code Online (Sandbox Code Playgroud)

或者,如果您也想添加标题,可以将前一行限制为大于0的所有TR:

$("#myTable tr:gt(0)").append("<td>New Column</td>");
Run Code Online (Sandbox Code Playgroud)

标题只在第一个TR上:

$("#myTable tr:first").append("<td>Delete Column LINK</td>");
Run Code Online (Sandbox Code Playgroud)


Sol*_*ogi 10

与您的问题无关,但您可以使您的HTML更具语义.

<table border="1">
    <thead>
        <tr>
            <th><a href="#" class="delete">DELETE ROW</a>COL 1</th>
            <th><a href="#" class="delete">DELETE COL</a>COL 2</th>
            <th><a href="#" class="delete">DELETE COL</a>COL 3</th>
            <th><a href="#" class="delete">DELETE COL</a>COL 4</th>
            <th><a href="#" class="delete">DELETE COL</a>COL 5</th>
            <th><a href="#" class="delete">DELETE COL</a>COL 6</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>ROW 1</td>
            <td>ROW 1</td>
            <td>ROW 1</td>
            <td>ROW 1</td>
            <td>ROW 1</td>
            <td>ROW 1</td>
        </tr>
        <tr>
            <td>ROW 2</td>
            <td>ROW 2</td>
            <td>ROW 2</td>
            <td>ROW 2</td>
            <td>ROW 2</td>
            <td>ROW 2</td>
        </tr>
    </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

修改后的jQuery代码可能如下所示:

var c = $("#myTable thead th").length;
$("#myTable thead tr").append("<th><a href=''>Delete</a> Col "+(c+1)+"</th>");
$("#myTable tr:gt(0)").append("<td>Col</td>");
Run Code Online (Sandbox Code Playgroud)

  • 或者将最后一行代码改为:`$("#myTable tbody tr").append("<td> Col </ td>");`并取消`:gt(0)`. (4认同)