1

我正在克隆包含两个文本输入和一个选择选项的行。我正在使用Uniform插件来设置选择的样式。但是,克隆行后,应用统一样式但统一/选择本身不起作用。焦点仍然在原始选择上,克隆选择的值不会改变。

您可以在这个小提琴(与这个线程相关联)中看到克隆选择的确切问题:http: //jsfiddle.net/broncha/WsFyV/34/。它们被克隆后,值永远不会改变。该线程中提到的修复不起作用,如该小提琴中所示。

我用来克隆行的脚本是这样的,从以前的问题中调整:

$('.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's/name 看起来像clone_test[0][thomas_the_train],clone_test[1][thomas_the_train]等等。

我已经尝试了这些不同的方法来将制服重新应用于克隆的选择,但这些方法都不起作用:

添加到 cloneRow 链:

.find('select').uniform().end()

在 cloneRow 链之后:

$.uniform.update('select');

或者

$('.select-class').on('change', function() {
    $.uniform.update('select');
});

任何人都知道如何统一处理克隆的元素?任何帮助将不胜感激!

4

1 回答 1

4

您所要做的就是$.uniform.restore('select');在开始克隆元素(或元素)之前使用,并且在将这些元素附加到页面之后$('select').uniform();再次调用以应用样式。我用您提供的示例创建了一个 jsfiddle:http: //jsfiddle.net/aykRa/

于 2013-06-18T17:41:42.723 回答