jquery报错Failed to execute 'appendChild' on 'Node': The new child element..
出现了这个报错,经过半小时的努力,查明了原因。具体演示如下:
这是html中的元素:
<div class="box">
<div class="inner"></div>
</div>
这是我要追加的元素:
<div class="addEle">
<div class="inner"></div>
</div>
这是jquery代码:
var box=$(".box");
var addEle=$("addEle");
box.find(".inner").apend(addEle);
原因:
关键在最后一句:box.find(".inner").apend(addEle); 这句话意思是:通过box元素选择它下面的inner,然后将addEle元素追加到inner里面。
这里有个问题,当find(".inner")时,不仅将box中原来的inner找到了,还找到了将要追加的addEle中的inner(这里是重点,具体视怎么回事,我也不清楚)
这时,上面的语句就是:将addEle添加到addEle下的inner,而新添加的addEle又有inner,于是又将addEle添加到addEle下的inner,而新添加的addEle又有inner,形成了一个死循环。
相当于:inner(addEle(inner(addEle(inner(addEle(inner()))))
结果就是下面这样
<div class="box">
<div class="inner">
<div class="addEle">
<div class="inner">
<div class="addEle">
<div class="inner">
<div class="addEle">
<div class="inner">
...
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
解决办法:
像我这种情况,就不能find(".inner"),而该精确定位inner,如下:
box.children(".inner").apend(addEle);