0

動的に構築されたテーブルから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()コメントでこれを考え直させてくれてありがとう!

4

1 に答える 1

0

修繕!

eP.appendToを$('#eP')。appendToに変更して、元の変数ではなくdomから取得するようにしました。おっと!'just detach()'コメントでこれを再考させてくれたadeneoに感謝します!

私もこれを行うことを提案してくれたNiftyDudeに感謝します...

于 2012-05-15T03:07:03.173 に答える