删除父容器

时间:2012-03-17 16:09:19

标签: javascript jquery

我有一个包含表格单元格内的字段的表单。在每行的最后一列,我有一个图像。单击该图像时,我想删除父<tr>。在我尝试通过生成一个函数作为参数传递行号:onclick='delete_row(x, y)'之前。这显然不是一个好的解决方案,因为我按其位置删除了行。我正在调用的函数有其他2个参数,因为它也删除了数据库中的行,所以第二个参数是要删除的数据库中的id。所以基本上我需要一个删除父<tr>并接受其他一些参数的函数。

编辑谢谢: 谢谢大家,我尝试了几乎所有的解决方案,并且都很好用。我刚刚决定迈克的塞缪尔,这似乎是最简单的:)再次感谢

4 个答案:

答案 0 :(得分:1)

如何删除最近的<tr>?您需要为 代码中的选择器进行调整,但一般形式如下所示:

$('img').click(function(){
  $(this).closest('tr').remove();
});

答案 1 :(得分:1)

您可以轻松使用HTML节点方法.removeChild()并遍历节点的.parentNode :( demo):

<td onclick="this.parentNode.parentNode.removeChild(this.parentNode);">
    Remove row
</td>

this.parentNode.parentNode将是<table><tbody>,而this.parentNode是父容器<tr>


更新rjz提供了一个简洁的功能(demonstration):

window.removeClosestRow = function(node) {
    while(node = node.parentNode) {
        if (node.tagName.toUpperCase() == 'TR') {
           node.parentNode.removeChild(node);
           break;
        }
    }    
}

答案 2 :(得分:1)

要传递当前节点的祖父母,请使用this.parentNode.parentNode

<tr><td><img onclick="delete_row(this.parentNode.parentNode, ...)"></td></tr>

答案 3 :(得分:-1)

尝试类似

的内容
onClick='MyDeleteFunc(this, var2, var3)';

将您点击的实际对象传递给javascript,您可以从那里获得几乎所有的参考文献。