Why is jquery clone cloning the parent but not its children?
我有一个父分区,它的子分区如下:
1 2
| <ul id="sortable1" class="droptrue ui-sortable">
<li id="app1" class="ui-state-default toolTip"> |
所以当我用下一行克隆父DIV时:
1
| var $copia = $('#padre>*').clone(); |
我打印克隆的变量,它只显示:
1
| <ul id="sortable1" class="droptrue ui-sortable"> |
有人知道它为什么只复制前两级吗??事先谢谢。复制后,我将用$(‘padre>>’)删除"padre"的所有子元素。remove();它确实删除了所有子元素,但当我执行append时,它只附加"padre"的第一个子元素。
- 你想克隆什么?$('#padre>*')将克隆其所有子代。
- 您的意思是执行var$copia=$('padre').clone();?
- 当给定适当的HTML时,您的.clone()语句似乎工作得很好。看到这个工作中的jsfiddle:jsfiddle.net/jfriend00/sja7z。如果你想做一些不同的事情,你必须更好地解释你的问题。
- 我尝试克隆所有子元素,然后当我调整浏览器的大小时,删除padre的所有子元素,当我返回到原始分辨率时,附加副本。
您没有正确关闭标签:
1 2 3 4 5 6
| <ul id="sortable1" class="droptrue ui-sortable">
<li id="app1" class="ui-state-default toolTip">
<li>
</ul> |
http://jsfiddle.net/e8ujm/
编辑:尝试以下操作:
1 2 3
| $('#padre').children().clone();
$("#clone").append($copia);
$('#padre').remove(); |
http://jsfiddle.net/e8ujm/2/
- 这很可能是个问题,除非操作程序没有显示实际的HTML。.clone()复制了整棵树,而不仅仅是部分向下。
- @我不认为是这样的。他只是在分享他的代码片段。例:当然还有更多的
-
,所以ul和li的关闭部分丢失了。
- @维加-你还有别的解释吗?OP的代码和适当的HTML一起工作很好。在这里看到一个jsFiddle:jsFiddle.net/jfriend00/sja7z
- 如果页面的doctype是xhtml-strict,那么这个标记是有问题的,特别是在IE中。
- 实际上,我确实关闭了它,只是我没有在示例中放置结束标记。但谢谢你的建议。
- @我知道,我想欧普没有解释他想做什么。
- @维加是的,我想是的。
- @欢迎使用Linker85。
- 如果我用链接中的代码做一个新的文件,它是有效的,但是当我尝试实现它时,它不起作用,是不是它不起作用,因为克隆之后我就从"padre"中删除了所有子元素??
- @Linker85尝试更新后的小提琴并用Firebug检查结果,这是否有效?
- 好吧,我设法通过将:$copia=$('padre').children().clone();在"padre"中加载所有子元素(我是从onready函数外部加载到由onready调用的外部函数中)来解决这个问题。因此,当我调整大小时,我清空了al"padre"子元素,然后像这样在"padre"中附加克隆:$('padre>*').remove();$('padre').append($copia);
- 好吧,听起来不错;)
试试这个:
1
| var $copia = $('#padre>*').clone(true, true); |
- .clone()的两个参数只控制数据和事件克隆。它们不会影响对象本身的克隆。克隆始终是深度克隆。请参阅jquery文档以获取解释。
- 克隆已经进行了深度克隆。这两个参数用于克隆事件和数据。