2

問題を理解するために背景はそれほど必要ではありませんが、私がやろうとしていることの基本的な考え方です。さまざまなセクションを展開、編集、折りたたむことができるフォームがあり、フォームフィールドの状態は次のとおりです。毎回思い出しました。変更を「キャンセル」する機能をユーザーに提供したいのですが、ユーザーがセクションを展開して変更を加えた後、以前のフォームセクション(展開前)に戻すことにした場合は、[キャンセル]をクリックしてフィールドはすべて元に戻ります。(これは基本的に「元に戻す」/ロールバックボタンです。)clone展開時にjQueryを使用してフォームセクションのクローンを作成し、ユーザーが「キャンセル」を押すと、更新されたフォームセクションを元のクローンに置き換えます。

問題は、ユーザーによる「select」要素の選択がクローンに含まれていないように見えることです。これを示すために、基本的なjsfiddleを作成しました。いずれかのセクションで何かを選択してクローンを作成しようとすると、選択せずにクローンが作成されます。

この制限を回避する方法はありますか?代わりに使用すべき別の方法はありcloneますか?

すべての選択の選択されたすべての値をコピーするループを手動でコーディングできると思いますが、これはかなりハッキーです。これに対処するためのよりスムーズな方法はありますか?

4

1 に答える 1

1

あなたのフィドルに基づいて:

$(function(){
    $('#sec1Clone').click(function(){
        $("#sec1 select option:selected").attr("selected", true);
        $('#sec1').clone(true).attr('id', 'cloneOfSec1').appendTo(document.body);
    });
     $('#sec2Clone').click(function(){
         $("#sec2 select option:selected").attr("selected", true);
        $('#sec2').clone(true).attr('id', 'cloneOfSec2').appendTo(document.body);
    });
});

それが許容できる解決策であれば、それはうまくいくようです。

于 2013-01-21T17:52:09.233 に答える