jQuery:如何只复制容器?

时间:2012-09-19 12:32:13

标签: javascript jquery dom

我有HTML结构,例如

<div id="mydiv" class="some" onclick="alert('Hello!')" style="background:red" >
   <div>aa</div>
   <div style="background:green" >bb</div> 
</div>  

http://jsfiddle.net/Pj5sn/

我想要

<div id="mydiv" class="some" onclick="alert('Hello!')" style="background:red" >
</div>
结果是

.clone()创建了一个深层副本,但我需要浅拷贝。

修改 到目前为止所有答案都包括深刻的复制和清晰的内容。我打算用它来容纳几十个容器,每个容器包含几十个物体。我觉得有必要提高效率。

4 个答案:

答案 0 :(得分:8)

首先使用.clone(),然后对结果使用.empty()

答案 1 :(得分:3)

最简单的是$(this).clone().html('')

答案 2 :(得分:0)

您必须将内容从您尝试克隆的div中删除。

var s = $('#mydiv').clone().html('');
$('#container').append(s);

简单,但有效!

http://jsfiddle.net/shannonhochkins/Pj5sn/1/

你去吧!

答案 3 :(得分:0)

我使用的解决方案有点不同。 首先,我创建一些结构并移动div内容:

var $storage=$('<div/>').append($("#mydiv").children());

现在我可以克隆剩余的“shell”并移动到内容的适当部分:

$("#mydiv").clone(true,true).attr("id","d1")
     .appendTo($(document.body))
      .append($(":first-child",$storage));

http://jsfiddle.net/KyTZ6/

可能看起来太复杂但我的任务是将HTML表格(~30 x 30)划分为六个部分,我的建议克隆和清算存在性能问题。