附加到DOM树后,对克隆元素的jQuery附加方法

时间:2019-05-20 11:57:48

标签: jquery jquery-clone

关于jquery-cloned元素的简短问题。 很长一段时间,我以为我必须在插入克隆的元素(到DOM树)后重新进行jqueryfy克隆,但是下面的代码可以正常工作。

HTML

<div id="test">test<"/div>
<button id="btn">push</div>

JavaScript

var $clone = $('#test').clone(),
    $btn = $('#btn');

$clone.prop('id','clone').appendTo('body');

// I thought this is necessary but it's not.
// var $clone = $('#clone');
$btn.on('click',function(){
  $clone.toggleClass('someclass');
});

那么有人可以告诉我为什么吗?

1 个答案:

答案 0 :(得分:0)

实际上,如果您会看到jQuery .clone() method的文档,则此方法会创建匹配元素集的深层副本。

因此,当您克隆元素时,clone方法将返回元素的副本。即使再次将其添加到主体中,复制元素的引用仍保留在变量中。因此,您无需再次获取它即可对其进行操作。

您可以了解:

var $clone = $('#test').clone();
// you created the copy of the $('#test') element and held it in $clone variable
$clone.attr('id','clone').appendTo('body'); // you should prefer prop() instead
// you changed it's id but it is still held in $clone
$clone.toggleClass('someclass');
// and you can toggle it's class as it is still held in $clone variable