有人可以向我解釋爲什麼,當我用jquery .clone()
克隆一個元素時,將其存儲在$(windows).data('myclone')
中並將此克隆數據元素附加到另一元素,克隆數據存在在$(windows).data('myclone')
的變化? (指向我在html檢查器中新創建的元素)
<li class="clone">
<button class="file-list-delete"><a href="#">clone this</a>
</button>
<input type="file" size="30" id="files" multiple="multiple" name="files" class="upload-files">
</li>
<button id="append">append clone</button>
<script>
$('.clone button').on('click', function() {
var cloneNode = $(this).parent().clone();
$(window).data('cloneNode', cloneNode);
console.log(cloneNode);
});
$('#append').on('click', function() {
console.log($(window).data('cloneNode'));
var clone = $(window).data('cloneNode');
$('.clone').after(clone);
});
</script>
這是一個小提琴,可以在您的控制檯中看到它。首先創建的元素只是克隆的數據,然後當你追加它時,它會改變它 http://jsfiddle.net/50eu0bnp/
這可能是因爲它們是同一個對象,所以在追加()它時不會再被克隆。 – 2014-09-26 14:21:03
究竟是什麼_changes_? – Spokey 2014-09-26 14:25:32
應該指出的是,一個LI只能是一個列表中的一個孩子,並且一個錨點不能存在於一個按鈕中。另外,你正在創建一個節點,在jQuery的數據中存儲對它的引用,然後你試圖將該節點插入到它自己之後,這當然不起作用,即使它做到了,它也是相同的元素,所以它被移動了,移動它後會導致完全相同的標記等。 – adeneo 2014-09-26 14:36:53