2016-03-29 2 views
1

私は次の行動にしようとしている:小道具でjquery DOMオブジェクトを複製することは可能ですか?

  • var domObj = $("<div>").prop("foo", "bar");
  • クローン作成されたオブジェクトvar clonedDomObj = domObj.clone(true);
  • それに割り当てプロップ
  • jQueryの $("<div>")を経由してDOMオブジェクトを作成するには、 clonedDomObj.prop("foo") は、コードペンを参照してくださいクローン化されたオブジェクトから小道具を読みます example

私が.prop("foo")からclonedDomObjを受け取ると、私は受け取ったundefined

質問:どのように小道具でjQuery DOMオブジェクトを複製することは可能ですか?

+0

'クローン(真、真)にしてみてください。デフォルトでは' – gurvinder372

+0

二番目のパラメータ最初の値をとり、https://api.jquery.com/clone/ – Mikhail

+1

@見ますMikhail私は自分の答えを更新した、私は更新されたバージョンがあなたにもっと役立つと思う。 –

答えて

3

オブジェクトと配列がコピーされていないと クローン化要素と元 素子との間で共有され続けます。ディープコピーにすべてのデータ、コピー手動それぞれ:jQueryの1.4のよう

var domObj = $("<div class='text'>").prop("foo", "bar"); 
 
$("#p1").text(domObj.prop("foo")); 
 

 
var clonedDomObj = domObj.clone(true).prop("foo",domObj.prop("foo")); 
 
$("#p2").text(clonedDomObj.prop("foo"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span>Original Value: </span><span id="p1"></span> 
 
<br/> 
 
<span>Cloned Value: </span><span id="p2"></span>

、全ての要素データ(.DATA()メソッドによって結合)も新しいコピーにコピーされます。

var domObj = $("<div class='text'>").data("foo", "bar"); 
 
$("#p1").text(domObj.data("foo")); 
 
var clonedDomObj = domObj.clone(true); 
 
$("#p2").text(clonedDomObj.data("foo"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span>Original Value: </span><span id="p1"></span> 
 
<br/> 
 
<span>Cloned Value: </span><span id="p2"></span>

+1

data()アプローチは、私が探しているものです – Mikhail

1

これが私が見つけた唯一の方法です。要素データ内

var domObj = $("<div>").prop("foo", "bar"); 
 
    $("#p1").text(domObj.prop("foo")); 
 
    
 
    var clonedDomObj = $("#p1").clone(true); 
 
    $("#p2").text(clonedDomObj.html());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span>Original Value: </span><span id="p1"></span> 
 
<br/> 
 
<span>Cloned Value: </span><span id="p2"></span>