(function(original) { jQuery.fn.clone = function() { var result = original.apply(this, arguments), my_textareas = this.find('textarea').add(this.filter('textarea')), result_textareas = result.find('textarea').add( result.filter('textarea')), my_selects = this.find('select').add(this.filter('select')), result_selects = result.find('select').add(result.filter('select')); for (var i = 0, l = my_textareas.length; i < l; ++i) $(result_textareas[i]).val($(my_textareas[i]).val()); for (var i = 0, l = my_selects.length; i < l; ++i) { for (var j = 0, m = my_selects[i].options.length; j < m; ++j) { if (my_selects[i].options[j].selected === true) { result_selects[i].options[j].selected = true; } } } return result; }; })(jQuery.fn.clone);