Bonjour,
Je fais l'événement clone sur un formulaire, sur lequel je clique sur un bouton et faire copier ce qui est entre la balise div.origin et le coller après le dernier élément (à la fin du document), DEMO
HTML
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <form id="frmImport" name="frmImport" method="post" enctype="multipart/form-data" > <div class="origin"> <div class="upImage" id="up1"> <label for="file-input1"> <img src="https://cdn3.iconfinder.com/data/icons/blackblue/128/iPhoto.png" id="file1"> </label> <input id="file-input1" type="file"/> <div class="txt1">Text1</div> </div> </div> <div class="newUps"></div> <div style="clear: both;"></div> <br><br><br> <button class="newUp">New</button> </form>
CSS
Code css : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 /* Upload image Start */ .upImage > input { display: none; } .upImage img { width: 170px; height: 170px; cursor: pointer; } .upImage{ border: 2px dotted gray; width: 170px; height: 170px; border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; float: left; margin: 10px; } .upDesc{ border: 0px solid gray; width: 170px; height: auto; float: left; margin: 10px; text-align: center; } /* Upload image EnD */
jQuery
Je trouve un problème à ce niveau:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 //$('.newUp').on('click', function(){ $('body').on('click', '.newUp', function(){ // get last id var lastID = $('#frmImport input:file').length; //console.log(lastID); // increment by 1 var incID = lastID + 1; //console.log(incID); var original = $('#up1').parent(); //console.log(original); // make clone var cloned = $('.origin').children().clone(true); //var cloned = $('.origin').clone(true); //var cloned = $('#up1').before('.origin').clone(); //console.log(cloned); var newCloned = $(cloned).each(function(x, y){ //console.log(y); // we need to attribute new ids for the y $('#up1', y).attr('id', 'up'+incID); $('#file1', y).attr('id','file'+incID); $('#file-input1', y).attr('id','file-input'+incID); $('label', y).attr('for','file-input'+incID); $('.txt1', y).attr('class', 'txt'+incID); $('.txt'+incID, y).text('Text'+incID); }); console.log(newCloned); //$('.newUps').html(newCloned); console.log('#up'+lastID); //newCloned.insertAfter('.origin'); newCloned.insertAfter('#up'+lastID); return false; });
Tous les IDs se change sauf le premier qui est #up1, reste toujours up1, et ne s'incrémente pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 // je fais loop sur les éléments à change leurs id var newCloned = $(cloned).each(function(x, y){ //console.log(y); // we need to attribute new ids for the y $('#up1', y).attr('id'+incID); $('#file1', y).attr('id','file'+incID);
Voici le résultat de newCloned
Code console : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 0:div#up1.upImage children 1:input#file-input2
input#file-input1 a changé vers input#file-input2
Merci à vous
Partager