jQuery Mobile の .clone() 関数を使用してフォーム内の div を複製し、繰り返し可能なセクションを作成していますが、ネストされた選択に問題があります。
div が複製され、ネストされた選択が新しい ID で更新されると、次の「更新」後に奇妙なことが起こります。
何が起こるかは非常に奇妙です。選択は二重になり、既存の選択内に配置されるため、結果は次のようになります。
ブラウザは Safari です。このコードは Safari でのみ動作する必要があるため、他のブラウザではテストを行っていません。
divを複製するために私がすることは次のとおりです。
var div = $.mobile.activePage.find('.repeatable').last().clone();
クローンを作成してから、ID を更新します。
var newValue = pid +'-' + index;
$(this).attr('id', newValue);
$("label[for='"+ old +"']").attr('for', newValue);
そして最後に、.val() が呼び出されたら、すべての選択を更新して正しい値が選択されるようにします。
if ($(this).data('role') === 'select') {
$(this).selectmenu();
$(this).selectmenu('refresh');
}
コードの最後の部分が呼び出されると、問題が発生します。選択が正しく表示される前に、選択が更新されると正しく機能し始めますが、元の要素の子として二重に配置されているため、UI が混乱します。
クローンボタンの前に、次の方法で div を追加します。
$('#clone_button').before(div);
この問題の原因は何ですか?
編集:これは jQuery Mobile: exampleのバグのようです。