Reputation: 425
I'm created simple script, this is my jquery:
//
$('.sections a').click(function (e) {
var clone = $('.sections a ~ div:last').clone();
$('.sections a').after(clone);
});
and html
<div class="sections">
<a href="#add_section">Add section</a>
<div class="section_1">
<input type="hidden" name="section_1">
</div>
</div>
and after click link "add section", my script clone last div after anchor. and with next click i want add one to class and input value for example:
<div class="section_1">
<input type="hidden" name="section_1">
</div>
<div class="section_2">
<input type="hidden" name="section_2">
</div>
<div class="section_3">
<input type="hidden" name="section_3">
</div>
Upvotes: 0
Views: 126
Reputation: 495
Add this code to your js:
var clones=1;
$('.sections a').click(function (e) {
var clone = $('.sections a ~ div:last').clone();
$('.sections a ~ div:last').after(clone);
clones++;
clone.attr('class','section_'+clones);
clone.find('input[type="hidden"]').attr('name','section_'+clones);
});
Sorry... I haven't seen the answer of @twain. It's practically the same, I hope the demo helps
Upvotes: 1
Reputation: 1325
Try this (its a bit dirty, but it should work):
$('.sections a').click(function (e) {
var clone = $('.sections a ~ div:last').clone();
var currentClass = $('.sections a ~ div:last').attr("class");
var currentId = currentClass.substr(currentClass.length -1);
currentId++;
$(clone).attr("class", "section_" + currentId);
$(clone).find("input").attr("name", "section_" + currentId);
$('.sections a ~ div:last').after(clone);
});
Upvotes: 1
Reputation: 1941
Try binding to the document and filtering on the element
$(document).on('click', '.sections a', function (e) {
var clone = $('.sections a ~ div:last').clone();
//increment attributes here
$('.sections a').after(clone);
});
Upvotes: 1