为了账号安全,请及时绑定邮箱和手机立即绑定

元素数据(data)内对象和数组不会被复制,将继续被克隆元素和原始元素共享。深复制的所有数据,需要手动复制每一个

元素数据(data)内对象和数组不会被复制,将继续被克隆元素和原始元素共享。深复制的所有数据,需要手动复制每一个


这是什么意思?



正在回答

2 回答

请问下,就楼主的问题,怎么手动复制每一个?既然说手动,有没有手动的代码怎么写?

下面的这个代码为例:

<div class='div'>慕课网</div>

$('.div').data('name','imooc');

上面的代码就是给div添加数据data。当你直接使用clone()时,div的data数据是不会被复制的。

var divcopy=$('.div').clone();

console.log(divcopy.name);//返回的是undefined;


0 回复 有任何疑惑可以回复我~

<div class='div'>慕课网</div>

$('.div').data('name','imooc');

上面的代码就是给div添加数据data。当你直接使用clone()时,div的data数据是不会被复制的。

var divcopy=$('.div').clone();

console.log(divcopy.name);//返回的是undefined;

只有使用clone(true)时;div中的data数据才会被复制。

简单理解就是clone(true)复制的所有数据,无法使用clone()获取,需要手动添加进去。

understand?

0 回复 有任何疑惑可以回复我~
#1

wanwan5856

深复制的所有数据,需要手动复制每一个.是说子元素也要手动复制吗,每一个的意思不是太理解
2016-07-29 回复 有任何疑惑可以回复我~
#2

694473412 回复 wanwan5856

楼主的例子。 <div class='div'>慕课网</div> $('.div').data('name','imooc'); 如果对div深复制了两个元素。这两个元素里面都是没有data数据的,如果想在这两个深复制的元素上使用data,就需要手动将data添加到两个(每一个)元素上。 不知道这样理解对不对?
2016-07-31 回复 有任何疑惑可以回复我~
#3

694473412 回复 694473412

好像理解错了。浅复制只是复制元素。深复制不仅仅复制元素,还能共享对象和数组,不过由于元素名称都是一样的,所以对象和数组修改修改后,所有源元素和克隆元素都会发生相应改变。如果不想产生联动效果,就需要对每一个克隆元素再复制一下数据。
2016-07-31 回复 有任何疑惑可以回复我~
#4

wanwan5856 回复 694473412

谢谢。
2016-08-01 回复 有任何疑惑可以回复我~
查看1条回复

举报

0/150
提交
取消

元素数据(data)内对象和数组不会被复制,将继续被克隆元素和原始元素共享。深复制的所有数据,需要手动复制每一个

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信