我正在克隆包含两个文本输入和一个选择选项的行。我正在使用Uniform插件来设置选择的样式。但是,在克隆行之后,将应用统一样式,但是均匀/选择本身不起作用。焦点仍然在原始选择上,克隆选择的值不会改变。
您可以在这个小提琴(associated with this thread)中看到克隆选择的确切问题:http://jsfiddle.net/broncha/WsFyV/34/。克隆后,价值观永远不会改变。该线程中提到的修复不起作用,可以在那个小提琴中看到。
我正在克隆我的行的脚本是这样的,从previous quesiton调整:
$('.add-row').on('click', function(event) {
function incrementProp(index, prop) {
return prop.replace(/(\d+)/, function(fullMatch, n) {
return Number(n) + 1;
});
}
var cloneVar = $(this).parent().parent('.sortable');
var cloneRow = $(cloneVar).find('.sort-group .row:last');
var cloneIns;
if (cloneVar.hasClass('before')) {
cloneIns = $(cloneVar).find('.sort-group .row:first');
insert = 'insertBefore';
} else {
cloneIns = $(cloneVar).find('.sort-group .row:last');
insert = 'insertAfter';
}
cloneRow.clone(true)[insert](cloneIns)
.addClass('add').removeClass('first')
.find('input[type=text], textarea, select').val('').attr('name', incrementProp).end()
.find('input, textarea, select, .selector').attr('id', incrementProp).end()
.find('option:selected').removeAttr('selected').end()
.find('.remove').removeClass('visible');
return false;
});
在那里的脚本中,ID和名称都按预期为.selector
类增加并选择自身。因此,选择ID /名称将显示为clone_test[0][thomas_the_train]
,clone_test[1][thomas_the_train]
,依此类推。
我已经尝试过这些各种方法来重新应用克隆选择,但这些方法都不起作用:
已添加到cloneRow链中:
.find('select').uniform().end()
:
$.uniform.update('select');
或
$('.select-class').on('change', function() {
$.uniform.update('select');
});
任何人都有任何想法如何统一处理克隆元素?任何帮助都会非常感激!!
答案 0 :(得分:4)
您只需在开始克隆元素(或元素)之前使用$.uniform.restore('select');
,然后在将这些元素添加到页面后再次调用$('select').uniform();
,以便应用样式。我已经使用您提供的示例创建了一个jsfiddle:http://jsfiddle.net/aykRa/