2009-05-28 11 views
73

Ich suche nach Tipps, wie ich mein Problem lösen kann.Ist es möglich, HTML-Elementobjekte in JavaScript/JQuery zu klonen?

Ich habe ein HTML-Element (wie Auswahlfeld Eingabefeld) in einer Tabelle. Jetzt möchte ich das Objekt kopieren und ein neues aus der Kopie generieren, und zwar mit JavaScript oder jQuery. Ich denke, das sollte irgendwie funktionieren, aber ich bin im Moment ein wenig ratlos.

So etwas wie diese (Pseudocode):

+3

http://stackoverflow.com/search?q=jquery+copy+element+content hat eine Reihe von verwandten Fragen. –

Antwort

34

Die jQuery Art und Weise (nicht die effizienteste):

Blick auf die clone() Methode von JQuery

Code Verwenden Sie tun können etwas wie das:

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

Es ist SEHR wichtig, die ID beim Klonen eines Elements zu ändern. –

3

Es ist wirklich sehr einfach in jQu ery:

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

ändern .appendTo() natürlich ...

+0

+1 du schlägst mich! –

0

In einer Zeile:

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

Ich denke nicht, dass das hilft, da Ihr Attributwert eine Zeichenfolge ist, die sich nicht ändert. –

238

Mit nativer javascript:

newelement = element.cloneNode(bool) 

wo die boolean gibt an, ob klonen Kindknoten oder nicht

+33

beste Antwort. Verwenden Sie jQuery nicht dort, wo Sie es nicht brauchen. – luschn

+0

Sieht gut aus ... aber Browserkompatibilität ist ab heute fraglich. –

+11

@AniketSuryavanshi Ich bin nicht sicher, 4. Februar vor allem aber [Kompatibilität sieht perfekt heute] (http://quirksmode.org/dom/core/#t91) –

15

Ja, können Sie Kinder eines Elements kopieren und in das andere Element einzufügen:

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

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

Beweis: http://jsfiddle.net/de9kc/

+0

Doppelte IDs sind ein Problem bei Ihrem Ansatz –

1

Versuchen Sie folgendes:

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

Sie müssen "# foo2" wählen als deine Wahl. Dann hol es mit html(). Hier

ist die html:

<div id="foo1"> 

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

Hier ist die javascript:

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

Hier wird die jsfiddle: http://jsfiddle.net/fritzdenim/DhCjf/

2

Sie können clone() Methode, um ein erstellen kopieren ..

FIDDLE HERE