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

prevent jQuery from creating duplicate clones via .clone()

本文关键字:创建 jQuery 通过 clone 防止      更新时间:2023-09-26

所以我有一个包含几个子元素的元素,当我尝试在父元素上使用jQuery.clone()时,它会克隆父元素(及其所有子元素),然后再次克隆孩子。举个例子来说明:

Javascript:

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

原始网页

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

修改后的网页:

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

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

编辑:小提琴!

谢谢

如果您从.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. 将找到每个子项并附加它们(给您留下克隆是双重复制的印象)。

相反,根据您的设置,只需克隆父项,进行修改并附加结果。

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

(我已将此作为答案发布,因为我觉得对于可能将此问题视为资源的其他人来说,评论是不够的)