Javascript 第二次单击时未追加输入

Javascript 第二次单击时未追加输入,javascript,jquery,html,event-delegation,Javascript,Jquery,Html,Event Delegation,我正在创建一个简单的树结构,它将输入字段作为子字段保存。每个子项由一个输入字段和两个按钮组成。一个按钮用于为输入添加子节点,另一个按钮用于删除节点。我的代码显示在下面的代码片段中,它没有按预期工作。问题是:我不能添加多个孩子,只能添加一个孩子 $(“#main”).on('click','add',function(){ var$td=$(this.parent(); 变量$td1=$(''{ html:“添加或删除” }); console.log($td.children('table')

我正在创建一个简单的树结构,它将输入字段作为子字段保存。每个子项由一个输入字段和两个按钮组成。一个按钮用于为输入添加子节点,另一个按钮用于删除节点。我的代码显示在下面的代码片段中,它没有按预期工作。问题是:我不能添加多个孩子,只能添加一个孩子

$(“#main”).on('click','add',function(){
var$td=$(this.parent();
变量$td1=$(''{
html:“添加或删除”
});
console.log($td.children('table').length);
if($td.children('table')。长度)
$td.children('table')。children('tr')。append($td1);
其他的
$td.追加($(''){
html:$(''){
html:$td1
})
}))
});

添加
去除

所有现代浏览器上的浏览器解析器(AFAIK?!)添加
TBODY
元素。有关更多详细信息,请参阅

在您的例子中,这将使
$td.children('table').children('tr')
返回空的匹配集,因为
children()
只针对直系后代(一个级别)

您可以改为使用
find()
方法,匹配任何后代:

$td.children('table').find('tr').append($td1);

浏览器解析器添加一个
tbody
,因此返回空的匹配集:
$td.children('table')。children('tr')
。使用
find()
代替
$td.children('table')。find('tr')
@A.Wolff:是的,你是对的,在添加
children('tbody')
@A.Wolff:
$td.children('table')。find('tr')
这会更好,在添加
eq(0)
以避免嵌套
tr
。请将其添加为答案。。。。。