我很惊讶地看到jQuery没有在$.clone()
操作的结果元素中包含任何功能来调用源元素。我的解决方法是简单地将原始元素的jQuery对象包含在克隆的数据存储中,如下所示
var $elOriginal = $('SomeUniqueSelector');
var $elClone = $elOriginal);
// Save a jQuery object of the original element in the
// clone's data store
$elClone.data('original', $elOriginal);
当我需要引用原文时,我会深入研究我的克隆数据存储
$elOriginal = $elClone.data('original');
就个人而言,我对此方法并不感到兴奋。 (当然我考虑用id
标记原始元素并简单地存储它,但后来我不得不在元素中添加一个id。不优雅。)
答案 0 :(得分:0)
使用withDataandEvents
和deepWithDataAndEvents
复制元素的事件和数据以及克隆元素的所有子元素。
$elClone.clone(true, true);
来自docs -
通常,绑定到原始元素的任何事件处理程序都不会复制到克隆。可选的withDataAndEvents参数允许我们更改此行为,而是复制所有事件处理程序,并绑定到元素的新副本。从jQuery 1.4开始,所有元素数据(由.data()方法附加)也会复制到新副本。 从jQuery 1.5开始,withDataAndEvents可以选择使用deepWithDataAndEvents进行增强,以复制克隆元素的所有子元素的事件和数据。
答案 1 :(得分:0)
修改,更新
jQuery' prevObject
属性似乎保存对原始对象的引用
尝试(v3)
var $elOriginal = $("div");
var $elClone = $("div").clone(true, true);
$elClone.html(123);
$("body").append($elClone);
console.log($elClone.prevObject.html())
var $elOriginal = $("div");
var $elClone = $("div").clone(true, true);
$elClone.html(123);
$("body").append($elClone);
console.log($elClone.prevObject.html())

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>abc</div>
&#13;