2009-07-29 11 views
3

要素を別のコンテナにコピーするために、jquery appendToを使用しようとしています。 オブジェクトは実際に追加されますが、ソースから削除されます。 ソース要素をそのまま残して要素を追加する方法はありますか? クローンコールクローンコールは、あなたが気に入ったものを呼び出します。jQuery cloneToの代わりにappendTo?

は、ここに私の現在のコードです:

jQuery(document).ready(function() 
{ 
    jQuery('#button').appendTo('#panel'); //button should appear ALSO in panel. 
}); 
+0

と私は本当に(デタッチ '探していた見つけた:

また、あなたは同じくらい簡単である選択された要素... のid属性を変更したいと思うでしょうがあり'クローン'の代わりに ' 'detach'はDOMから項目を削除しますが、データバインディングを保持するので、他の場所に要素を追加すると、イベントハンドラは引き続き動作します。 http://api.jquery.com/detach/ –

答えて

9

閉じるが、十分に閉じません。以下のコードはclone()要素になり、#panelに追加します。

jQuery(document).ready(function() 
{ 
    jQuery('#button').clone().appendTo('#panel'); 
}); 

IDを同じページに2回使用することは標準に反することに注意してください。だから、これを修正するには:あなたが実行する必要があります

jQuery(document).ready(function() 
{ 
    jQuery('#button').clone().attr('id', 'newbutton').appendTo('#panel'); 
}); 
1

コードは次のようになります。これは何

はDOMからグラブノードであり、その後、メモリにそれのクローンを作ります。次に、この新しいオブジェクト(jQuery('#button').clone())を取り、それを#panelのDOMに追加します。これは一般的には常に良い戦略です:できるだけDOMに触れることでDOM操作を試みてください。最後までノードや要素を挿入したり追加したりすることなく、ノードや要素の操作を行うことができます。

4

単にそれを追加する前に、あなたの選択したjQueryオブジェクトにclone()メソッドを呼び出します。

$('#button').clone().appendTo('#panel'); 

あなたはまた、選択した要素に接続されているすべてのイベントハンドラのクローンを作成する必要がある場合は、clone()にパラメータとしてブールtrueを渡します方法。 )ここで終わった

$('#button').clone().attr('id', 'button-clone').appendTo('#panel');