Jquery获取名称为“”的父项不起作用

Jquery获取名称为“”的父项不起作用,jquery,html,Jquery,Html,我举了以下例子: 这里的想法是动态创建表,表中的按钮只在该表中创建行 <div id="divPrincipal"> </div> <button id="btnAdd">Add</button> <script> var objDivPrincipal = $("#divPrincipal"); var tbl; $("#btnAdd").click(function () { create

我举了以下例子:

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

<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>

添加
var objDivPrincipal=$(“#divPrincipal”);
var-tbl;
$(“#btnAdd”)。单击(函数(){
createTable();
});
函数createTable(){
tbl=$(“FNameLNameAddRow
”); objDivPrincipal.append(待定); tbl.find(“.btnAddRow”)。单击(函数(){ $(this.parent().parent().parent().after(“JohnSnow”); }); }
我不喜欢使用parent().parent().parent()。。。我试着用parent('tbody')和nexist('tbody'),但没有成功。甚至父('table').find('tbody')也不起作用

Tks.

使用:

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

这是因为它不属于同一个祖先,您的添加按钮位于
tfoot
中,因此请尝试:

$(this).closest("tfoot").prev("tbody").append("<tr><td>John</td><td>Snow</td></tr>");
$(this).closest(“tfoot”).prev(“tbody”).append(“JohnSnow”);
您还需要
追加
而不是
之后,这样上面会找到最近的
tfoot
,然后是上一个
tbody
,并追加一个新的
tr


演示:

您不能也引用tbl.find(“表”)吗。看起来这里要学的不仅仅是这些answer@Mutmatt-我不知道我是否明白你的意思。你想用
tbl.find(“table”)
来代替什么呢?因为他声明了var tbl并做了一个tbl=$(“blahblahblah”)然后将它插入到dom中,tbl是dom中jquery对象的一个表示形式,所以find可能会稍微快一点,因为他们说“剥猫皮的方法不止一种”@mutmat-Hmmm,虽然
tbl
总是指最后一个新创建的表,所以我不确定。需要测试。这会在AD或tbody上添加新行吗?我这样做是为了添加到tbody$(this).closest('table').find('tbody').append('JohnSnow');Tks。它将附加到tbody的末尾还是开头?