FORGE.features.nestedFields = { config: { sortable: { } }, init: function (container, options) { var self = FORGE.features.nestedFields, $container = $(container); $.extend(self.config, options); $container .on('click', 'a.add_child', self.addChild) .on('click', 'a.remove_child', self.removeChild) .find('.sortable').sortable({ update: function(event, ui) { var $list = $(this); var i = 0; $.each($list.find('li'), function() { $(this).find('input[name*=list_order]').val(i); i++; }); self.runCallback(self.config.after); } }); }, addChild: function (e) { e.preventDefault(); var self = FORGE.features.nestedFields, assoc = $(this).attr('data-association'), content = $('#' + assoc + '_fields_template').html(), regexp = new RegExp('new_' + assoc, 'g'), new_id = new Date().getTime(), $list = $('#'+assoc+'-list'); self.runCallback(self.config.before); $list.append(content.replace(regexp, new_id)); // Maintain the same value as the last select box if (content.match(/