阻止jQuery通过.clone()创建重复的克隆

时间:2011-05-05 20:00:58

标签: javascript jquery dom

所以我有一个带有一些子元素的元素,当我尝试在父元素上使用jQuery.clone()时,它会克隆父元素(包含所有子元素),然后再次克隆kiddos。用一个例子来澄清:

使用Javascript:

$(parent).clone(false).appendTo(container);

原始HTML

<parent>
    <element1>
    <element2>
</parent>

<container></container>

修改HTML:

<parent>
    <element1>
    <element2>
</parent>

<container>
    <parent>
        <element1>
        <element1>
    </parent>
    <element1>
    <element2>
</container>

现在,我需要一种方法来阻止函数克隆元素,而不使用ID或类,因为我无法预测父级的内容。

编辑:Fiddle

谢谢,

露娜

1 个答案:

答案 0 :(得分:2)

如果你在.each()内调用克隆,它将通过每个选择器(在你的情况下,你将这个类提供给父和它的孩子)并复制/追加每个找到的项目。简单地说:

<div class="parent">
  <div class="child"></div>
  <div class="child"></div>
</div>
<div class="container"></div>

$('.parent, .child').each(function(i,e){
  $(this).clone().appendTo('.container');
});

威尔:

  1. 查找.parent(按层次结构)也会找到.child ren,复制它们并附加它们。
  2. 会找到每个孩子并附加他们(留下印象克隆是双重复制的。)
  3. 相反,根据您的设置,只需克隆父级,进行修改,然后附加 结果。

    如果您想要克隆.parent的后代,请尝试使用其他选择器(可能.parent > .child显示直接子关系)。例如$('.parent > .child').clone();

    (我发布这个作为答案,因为我觉得评论不足以让其他人发现这个问题作为资源)