使用jQuery克隆tr对象追加到tbody时功能异常问题求助
问题原因
- 你通过
template.find("table tbody tr")获取到的<tr>元素,是嵌套在你克隆出的离线DOM片段里的<table>结构下的,直接将属于其他<table>上下文的<tr>插入目标<tbody>时,jQuery/浏览器的DOM操作逻辑会出现异常,导致插入失败,这就是第一段代码没有效果的原因。 - 第二段代码直接插入
<tr>的子元素(也就是<td>节点),自然会丢失外层的<tr>标签,和你观察到的现象一致。
解决方法
两种方案都可以修复问题:
方案1:直接克隆目标<tr>(更简洁,推荐)
不需要克隆整个模板容器,直接定位到你需要的<tr>节点克隆后插入即可:
// 如需保留tr绑定的事件,可改为.clone(true) $("#secret_tr table tbody tr").clone().appendTo("table.table tbody");
方案2:调整原有写法,先将<tr>从模板DOM中脱离
如果要沿用你原有的代码逻辑,只需要在拿到<tr>后调用detach()方法将其从模板的DOM结构中独立出来再插入即可:
var template = $("#secret_tr").children().clone(); var tr = template.find("table tbody tr").detach(); $("table.table tbody").append(tr);
内容的提问来源于stack exchange,提问作者Cjoerg
相关产品推荐
相关产品推荐

