Would there be a better, cleaner way to write this conditional script? It's doing the same thing basically, except if cloneVar
has the class "before", it changes which row it's grabbing (first or last) and changes .insertAfter
to .insertBefore
.
var cloneVar = $(this).parent().parent('.sortable');
if ($(cloneVar).hasClass('before')) {
var cloneRow = $(cloneVar).find('.sort-group .row:first');
$(cloneRow).clone(true).insertBefore(cloneRow)
.addClass('add').removeClass('first')
.find('input[type=text], textarea').val('')
.attr('name', function(index, name) {
return name.replace(/(\d+)/, function(fullMatch, n) {
return Number(n) + 1;
});
}).parent().find('input, textarea').attr('id', function(index, id) {
return id.replace(/(\d+)/, function(fullMatch, n) {
return Number(n) + 1;
});
}).parent().find('.delete').removeClass('visible');
return false;
} else {
var cloneRow = $(cloneVar).find('.sort-group .row:last');
$(cloneRow).clone(true).insertAfter(cloneRow)
.addClass('add').removeClass('first')
.find('input[type=text], textarea').val('')
.attr('name', function(index, name) {
return name.replace(/(\d+)/, function(fullMatch, n) {
return Number(n) + 1;
});
}).parent().find('input, textarea').attr('id', function(index, id) {
return id.replace(/(\d+)/, function(fullMatch, n) {
return Number(n) + 1;
});
}).parent().find('.delete').removeClass('visible');
return false;
}