2009-05-28 5 views
73

मैं अपनी समस्या को हल करने के तरीके पर कुछ सुझाव ढूंढ रहा हूं।जावास्क्रिप्ट/JQuery में एचटीएमएल तत्व वस्तुओं को क्लोन करना संभव है?

मेरे पास एक तालिका में एक HTML तत्व (जैसे चयन बॉक्स इनपुट फ़ील्ड) है। अब मैं ऑब्जेक्ट की प्रतिलिपि बनाना चाहता हूं और प्रतिलिपि में से एक नया उत्पन्न करना चाहता हूं, और यह जावास्क्रिप्ट या jQuery के साथ। मुझे लगता है कि यह किसी भी तरह काम करना चाहिए, लेकिन इस समय मैं थोड़ा उलझन में हूं।

कुछ इस (छद्म कोड) की तरह:

+3

http://stackoverflow.com/search?q=jquery+copy+element+content संबंधित प्रश्नों का एक समूह है। –

उत्तर

34

jQuery रास्ता (सबसे कारगर नहीं):

JQuery

की clone() विधि पर देखो आप कर सकते हैं अपने कोड का उपयोग करना कुछ ऐसा:

$('#ddl_1').clone().attr('id', newId).appendTo('p'); // append to where you want 
+22

जब आप किसी तत्व को क्लोन करते हैं तो आईडी को संशोधित करना बहुत महत्वपूर्ण है। –

3

यह वास्तव में jQu में बहुत आसान है ery:

$("#ddl_1").clone().attr("id",newId).appendTo("body"); 

.appendTo बदलें() निश्चित रूप से ...

+0

+1 आपने मुझे हराया! –

0

एक पंक्ति में:

newelement = element.cloneNode(bool) 

जहां बूलियन कि क्या इंगित करता है:

$('#selector').clone().attr('id','newid').appendTo('#newPlace'); 
+1

मुझे नहीं लगता कि इससे आपकी सहायता मान एक स्ट्रिंग होगी जो बदलेगी नहीं। –

238
देशी जावास्क्रिप्ट के साथ

बच्चे नोड्स क्लोन करने के लिए या

+33

सर्वोत्तम उत्तर। jquery का उपयोग न करें जहां आपको इसकी आवश्यकता नहीं है। – luschn

+0

अच्छा लगता है ... लेकिन ब्राउज़र संगतता आज के रूप में संदिग्ध है। –

+11

@AniketSuryavanshi मुझे विशेष रूप से 4 फरवरी के बारे में निश्चित नहीं है, लेकिन [संगतता आज सही दिखती है] (http://quirksmode.org/dom/core/#t91) –

15

हाँ, आप एक ही तत्व के बच्चों को कॉपी और अन्य तत्व में पेस्ट कर सकते हैं:

var foo1 = jQuery('#foo1'); 
var foo2 = jQuery('#foo2'); 

foo1.html(foo2.children().clone()); 

सबूत: http://jsfiddle.net/de9kc/

+0

डुप्लिकेट आईडी आपके दृष्टिकोण के साथ एक समस्या होगी –

1

आज़माएं:

$('#foo1').html($('#foo2').children().clone()); 
0

आप "# foo2" का चयन करने की जरूरत है आपके चयनकर्ता के रूप में। फिर, इसे एचटीएमएल() के साथ प्राप्त करें।

<div id="foo1"> 

</div> 
<div id="foo2"> 
    <div>Foo Here</div> 
</div>​ 

यहाँ जावास्क्रिप्ट है:

$("#foo2").click(function() { 
    //alert("clicked"); 
    var value=$(this).html(); 
    $("#foo1").html(value); 
});​ 

यहाँ jsfiddle है: http://jsfiddle.net/fritzdenim/DhCjf/

2

आप एक बनाने के लिए क्लोन() विधि का उपयोग कर सकते हैं

यहाँ एचटीएमएल है प्रतिलिपि ..

$('#foo1').html($('#foo2 > div').clone())​; 

FIDDLE HERE

संबंधित मुद्दे