jQuery删除表列

时间:2010-12-28 06:40:38

标签: jquery

我有一张桌子,无法更改标记:

<table>
    <thead>
        <tr>
            <th>
                blablabla
            </th>
            <th>
                blablabla
            </th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>
                efgd
            </td>
            <td>
                efghdh
            </td>
        </tr>
    </tbody>
</table>

这是我的函数,它应删除一列。在单击单击时调用它:

function (menuItem, menu) {
    var colnum = $(this).prevAll("td").length;

    $(this).closest('table').find('thead tr th:eq('+colnum+')').remove();
    $(this).closest("table").find('tbody tr td:eq('+colnum+')').remove();    
    return;
}

但它会删除其他内容,而不是我要删除的列。我哪里错了?

6 个答案:

答案 0 :(得分:13)

列几乎只是单元格,因此您需要手动遍历所有行并通过索引删除单元格。

这应该为您提供了删除第3列的良好起点:

$("tr").each(function() {
    $(this).filter("td:eq(2)").remove();
});

答案 1 :(得分:7)

这使用.delegate()作为处理程序,使用cellIndex获取单击的单元格索引的更原生的方法,cells从每行中拉出单元格。

示例: http://jsfiddle.net/zZDKg/1/

$('table').delegate('td,th', 'click', function() {
    var index = this.cellIndex;
    $(this).closest('table').find('tr').each(function() {
        this.removeChild(this.cells[ index ]);
    });
});

答案 2 :(得分:5)

这对我来说很好用:

$(".tableClassName tbody tr").each(function() {
    $(this).find("td:eq(3)").remove();
});

答案 3 :(得分:1)

如果你有静态html(考虑有10列的表),

然后使用以下内容删除第一列以及标题:

 $('#table th:nth-child(1),#table td:nth-child(1)').remove();

现在新表将有9列,现在您可以使用数字删除任何列:

 $('#table th:nth-child(7),#table td:nth-child(7)').remove();

答案 4 :(得分:0)

从每行中删除第一列。

$('.mytable').find("tr td:nth-child(1)").each(function(){
    $(this).remove()
});

答案 5 :(得分:0)

通过在目标列上应用某些类,我们可以将其删除。 例如

<tr>
    <td>ID</td>
    <td>Name</td>
    <td><button class="btnRemoveMember">X</button></td>
</tr>

从上面的示例表中,我们可以删除表的第3列,如下所示。

$(.btnRemoveMember).closest('td').remove();