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的末尾还是开头?