2013-01-06 5 views
7

jQueryで要素のコンテンツを複製する方法はありますか?要素全体ではなく、コンテンツ(子供)のみ。jqueryクローンのみ要素の内容

.html()と似たようなものですが、コンテンツに添付されたイベントのクローニングにも興味があります。

私は.cloneを見ていましたが、要素全体をクローンしているようです。

ありがとうございました。

+0

すべての子をループしてコピーしますか? – ZombieSpy

+3

'$ cloned.children()'? – undefined

+0

要素に関連付けられたイベントはクローン化されません –

答えて

18

Douaアルベリthe jQuery API documentation for .clone()を参照して、あなたは何をしたいことは.clone(true,true)であることがわかります。これにより、すべてのデータおよびイベントバインディングを含む要素(または要素の集合)の完全コピーが作成されます。

次に、.clone(true,true)の使い方について2つの選択肢があります。

  1. 子を個別にクローンして、子のクローンを含むjQueryコレクションを提供します。

    var $childClones = $("#myElement").children().clone(true,true);

  2. クローン外側の要素は、それ自体が子供のクローンを含む、外側の要素のクローンを含有するjQueryのコレクションを得ました。

    var $clone = $("#myElement").clone(true,true);

あなたが採用接近するやや学術的です。いずれの場合も、下位要素はDOM内に操作および/または挿入されるために一括してまたは個別に利用できますが、そうするコードは少し異なります。

4

あなたは深いコピーのような場合は、単に子供のクローンを作成:

$('#footer-flair').children().clone()

、代わりに特定の要素にイベントをアタッチするその方法あなたの、子要素を聴いているコンテナ要素にイベントをアタッチコンテナー内に数千の要素を追加/削除しても、コンテナー要素が保持されている限り、イベントは発生します。イベントを遠ざけたくない場合は、bodyタグでこれを行うことができます。

使用それほどのようなイベントをバインドする方法「オン」:

$('body').on('click', 'button.className', function(){ 
    alert('button clicked'); 
}); 
+0

バブルしないイベントはどうですか? –

+0

イベントは複製されません。 –

+0

@DouaBeri私が答えたいと言っているのは、イベントを複製することはできませんが、多くの異なる要素に多くのイベントが添付されている代わりに、 'body'のような親にバインドしてコード例のように子を聴くことです上記。 – nimrod

関連する問題