動的に構築されたテーブルからjQueryオブジェクトとしてtrを削除するコードがあります(各trには一意のID:tridがあります):
tri = $("#"+trid+"");
var newrow = '<tr id="newr"><td colspan="4" align="center"><div id="nrow"> </div></td></tr>';
tri.after(newrow);
tri.detach();
次に、innerHTMLを使用してdiv'nrow'にフォームを配置します...これが初めて機能するフォームにはjQueryuidatepickerがあります。
フォームがキャンセルされたら、リストを元の状態に戻します。
setTimeout("tri.replaceAll( $('#newr') )", 400);
その後、その(または任意の)行を編集しようとすると、フォーム内のjquery ui datepickerが強制終了されることを除いて、これはすべて美しく機能します。私はそれをreplaceAllラインになるまで撃ち落とすのに苦労しました。それを取り出して、リストを再構築して置き換えると、問題なく機能します(タイムアウトでもありません)。
では、replaceAllを使用せずにtr'newr'をjqueryオブジェクト'tri'に置き換える別の方法はありますか(replaceWithも機能しません)?
編集:
OK、これが私がフォームをページの他の場所のdivから移動する方法です:
eP = $('#eP');
eP.replaceAll( $('#nrow') );
$("#editPast").show('blind','',500,'');
ePには非表示のdiveditPastが含まれています...
次に、キャンセル機能でePを元に戻します。
setTimeout(function() {eP.appendTo($('#ePreplace')); }, 500); (thanks adeneo!)
私がtri.replaceAllを実行する前に、setTimeoutを使用すると、その後に発生します...
したがって、私の問題は、ePが#nrowで使用された後、日付ピッカー状態を保持せず、htmlだけを保持することだと思います。
修繕!
元の変数の代わりにdomから取得するようににeP.appendTo
変更されました。$('#eP').appendTo
おっと!just detach()
コメントでこれを考え直させてくれてありがとう!