Dupliquer (cloner) un élément avec jQuery

Mai 2013

jQuery permet de faire une copie d'un élément HTML de la page, grâce à la fonction .clone(). Cela peut être très utile pour par exemple ajouter un élément à une liste, en se basant sur un élément existant tout en réinitialisant son contenu.

Voici un exemple, avec une page très simple qui contient une div destinée à contenir des informations sur une voiture :

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset="utf-8">
</head>
<body>
	<button id="clone">Cloner</button>
	
	<div class="voiture" id="voiture1">
		<div class="marque">renault</div>
		<div class="couleur">noir</div>
	</div>
</body>
</html>

Voici comment créer de nouvelles div voiture à partir de celle existante, lors du clic sur le bouton "Cloner" :

$(document).ready(function($){
	$('#clone').click(function(e){
		var copie = $('#voiture1').clone();
		copie.find('.marque').html('peugeot');
		copie.find('.couleur').html('rouge').css('color', 'red');
		copie.appendTo('body');
	});
});

Après avoir lu excel condition couleur vous en saurez d'avantage sur ce sujet.

Le fonctionnement est très simple : la fonction clone crée une copie de l'élément HTML retourné par le sélecteur jQuery, et retourne une référence vers cet élément.

Donc il suffit de récupérer cette référence dans une variable : copie. Ensuite on peut modifier l'élément cloné en utilisant les différentes fonctions de jQuery que vous connaissez : .find(), .html(), .css()...

Et une fois qu'on a terminé, on ajoute l'élément au body (car par défait l'élément existe juste en mémoire, mais il n'est pas affiché dans la page, cf detach/attach).

Découvrez ce tutoriel photoshop : étiquette vintage à lire tout de suite !

2 commentaires :
commentaire n°2856 par Olivier C
Olivier C samedi 2 août 2014, 11:19
Génial. J'ai trouvé ici une réponse que je cherchais depuis longtemps : Comment ajouter quelque chose à un élément créé via jQuery ? La réponse était de tout mettre dans une variable. Merci.
commentaire n°3934 par meriem8831
meriem8831 lundi 25 février 2019, 09:12
Bonjour,
moi j'ai utilisé cette fonction de cette façon mais j'arrive pas à récupérer ligne cloné (ajouter dans mon tableau):

<form action="choix_etab.php" method="post" >
<table>
<tr>
<td><input type="text" name="diplome" id="diplome" size="40" /></td>
<td><input type="text" name="specialite" id="specialite" size="40"/></td>
<td><input type="date" name="Date_dip" id="Date_dip" size="10"/></td>
<td><input type="button" onclick="clone(this.parentNode.parentNode) "/></td>
</tr>
</table>
</form>

et voici ma fonction clone():
function clone(line) {
newLine = line.cloneNode(true);
line.parentNode.appendChild(newLine);
}

avez vous une solution svp ??
facultatif
Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré