2010-10-23 6 views
23

Je souhaite copier le contenu d'un div sélectionné vers un autre div avec jquery clone. Ce que je veux dire, c'est quand nous faisons un clone d'une div avec jquery (corrigez-moi si je me trompe), nous devons définir sa position et il va créer de façon dynamique une nouvelle division qui est affiché.comment cloner le contenu d'un div vers un autre div

mais je veux obtenir le contenu d'un div sélectionné et le copier dans un autre pré-set div

+0

merci u tout ici est ce que je veux vraiment arriver http://www.jsfiddle.net/pahnin/c2p54/2/ – pahnin

Répondre

46
var a = $('#selector').html(); 
var b = $('#selector').html(a); 

pas sûr que je vous ai bien compris, mais je pense que c'est ce que vous vouliez dire :)

+14

Cela pourrait aussi être écrit:. '$ ('# SelectorDestination') html ($ ('# selectorSource'). html()); '. Éviter de déclarer des variables. –

+8

Seule chose que nous devrions être prudents est que nous ne devrions pas dupliquer les ids dans le html – kobe

+0

@dustin oui c'est la même chose mais je pensais depuis qu'il a demandé de ne pas mettre sur le dom "je ne veux pas l'ajouter n'importe où": – Val

7

Je ne suis pas d'accord. Cloner peut enregistrer des données sans appliquer au contenu.

Regardez ici:

http://www.jsfiddle.net/dactivo/FqffM/

var mylayer=$('.hello').clone(); 

Ici vous pouvez gérer la variable "mylayer" que vous voulez, et ce n'est pas dans les DOM.

+0

de toute façon la méthode de val est simple et je pense que ça me va bien – pahnin

+0

Bien sûr, html() est une bonne méthode mais il est bon de savoir que clone() peut être géré sans inclure dans le DOM – netadictos

+1

'Clone' copie également l'élément conteneur, que je ne pense pas que @pahnin veut. –

4
$("#from").clone().appendTo($("#to")); 

Mais cela ne supprimera pas/masquera le DIV principal. Pour masquer la principale div, faites ceci:

$("#from").clone().appendTo($("#to")); 
$("#from").remove(); 
+0

Je pense que vous n'avez pas compris ma question. – pahnin

4
$(".from").click(function() { 
    $(".from").removeClass("CloneMe"); 
    $("#to").html(''); 
    $(this).addClass("CloneMe"); 
    $(".CloneMe").clone().appendTo("#to"); 

}); 

Vous pouvez ajouter une classe sur un clic (ou un autre événement) qui est le disque codé à cloner. Dans cet exemple, il existe une liste de noms de classes contenant du contenu stylé (divs etc) - ajoutez la classe .CloneMe mais supprimez d'abord cette classe pour vider la div si l'utilisateur sélectionne un autre élément.) pour être sûr de supprimer tout code HTML ainsi. Appliquez ensuite la classe en utilisant (this) pour éviter de saisir tous les éléments avec ce nom de classe et finalement ajouter à la div. Le résultat est que l'utilisateur peut sélectionner n'importe quel élément avec ce nom de classe et le remplir dans le conteneur. - J'imagine que l'utilisation d'une classe pour le conteneur vous permettrait de le peupler à plus d'un endroit.


+0

Pourquoi faire tout ça au lieu d'utiliser la réponse directe de @ val? – pahnin

Questions connexes