Jquery获取名称不起作用的父级

时间:2013-11-08 17:08:12

标签: jquery html

我有以下示例: http://jsfiddle.net/Jm7Kp/

这里的想法是动态创建表,表中的按钮仅在该表中创建行。

<div id="divPrincipal">
</div>
<button id="btnAdd">Add</button>

<script>
    var objDivPrincipal = $("#divPrincipal");
    var tbl;
    $("#btnAdd").click(function () {
        createTable();
    });

    function createTable() {
        tbl = $("<table border=1><thead><tr><td>FName</td><td>LName</td></tr></thead><tbody></tbody><tfoot><tr><td><button class='btnAddRow'>AddRow</button></td><td></td></tr></tfoot></table></br>");
        objDivPrincipal.append(tbl);
        tbl.find(".btnAddRow").click(function () {
            $(this).parent().parent().parent().after("<tr><td>John</td><td>Snow</td></tr>");
        });
    }
</script>

我不喜欢使用parent()。parent()。parent()...我试图使用parent('tbody')和最接近('tbody')但它不起作用。即使是父('table')。find('tbody')也行不通。

韩国社交协会

2 个答案:

答案 0 :(得分:2)

使用:

$(this).closest('table').append("<tr><td>John</td><td>Snow</td></tr>");

<强> jsFiddle example

答案 1 :(得分:1)

那是因为它不在同一个系列中,你的添加按钮位于tfoot,所以请尝试:

$(this).closest("tfoot").prev("tbody").append("<tr><td>John</td><td>Snow</td></tr>");

您还希望append不是after - 所以上面找到最接近的tfoot,然后找到上一个tbody,并附加一个新的tr < / p>

演示:http://jsfiddle.net/Jm7Kp/7/