2010-03-16 56 views
2
//I am cloning a dom element and inserting it in dom element multiple times 

    <div class='toBeCloned'>some text</div> 
    <div id='target'></div> 

    var _clone=$('.toBeCloned').clone(true);//create clone 
    var _target=$('#target'); //this is target 

    _target.append(_clone); //append target 
    _target.append(_clone); //append target 
    _target.append(_clone); //append target 

//this should add 3 elements but it's adding only one 
+1

@Praveen未來,如果您沒有足夠快地回答問題,請不要發佈新問題。在您重新發布後,我剛剛完成了關於您的原始問題的回答。 - 另外,如果你想簡化你的問題,只需編輯原來的問題。投票結束這一重複。 –

回答

7

append有點奇怪,在這裏 - 它移動的元素,但它也可能克隆它,如果你把它添加到多個元素(例如$(div).append將克隆元素爲每個div)。
如果你想創建3個元素,只需撥打clone 3次:

var _clone=$('.toBeCloned'); 
var _target=$('#target'); //this is target 

for(var i=0;i<3;i++){ 
    _target.append(_clone.clone(true)); //append target, clone every time 
} 
+0

+1很棒的答案科比。很高興你添加了解釋清楚! –

0

在概念上,奇怪插入在DOM多次的單個元素,因爲一個DOM元素可以有最多一個父(可憐的元素!)。如果將它插入容器相同的容器中,自己的兄弟姐妹還是很奇怪,所以也一樣排除了。

這就是爲什麼每當將某個元素添加到其他位置時,該元素就會從結構中移除(如果它在一箇中)。

我現在談到了純粹的js和DOM。

我簡單地認爲jQuery的append不會克隆元素,但是如果它在一組元素上被調用,它「很方便」地這樣做。

+0

'append'可以將元素從其位置**中移除,並通過將它附加到多個元素來多次克隆它。 (請參閱我上面的解釋和示例:http://jsbin.com/udiya)。在這種情況下,OP(原始海報)附加到單個元素,所以它只被移動了3次。 – Kobi

+0

噢,對不起。如果選擇器返回一個集合。 jQuery只是隱藏了我的眼睛的迭代,因爲它似乎適應於它被調用的任何東西(單個元素或一組)。 – npup