1

2 つのテキスト入力と 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;
});

.selectorそこのスクリプトでは、クラスと選択自体の両方で、ID と名前がすべて期待どおりに増加しています。したがって、select 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 に答える