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);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值