0

我有一些代码从动态构建的表中删除一个 tr 作为 jQuery 对象(每个 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' 中放置了一个表单......表单中有一个 jQuery ui datepicker,这是第一次工作。

取消表格后,我将列表恢复为原来的状态:

setTimeout("tri.replaceAll( $('#newr') )", 400);

这一切都很好,除了如果我尝试在此之后编辑该(或任何)行,它会杀死表单中的 jquery ui datepicker。我很难将其归结为 replaceAll 线。如果我把它拿出来并通过再次构建它来替换列表,它就可以正常工作(它也不是超时)。

那么是否有另一种方法可以在不使用replaceAll的情况下用jquery对象'tri'替换tr'newr'(replaceWith也不起作用)?

编辑:

好的,这就是我将表单从页面其他位置的 div 移动的方式:

eP = $('#eP');
eP.replaceAll( $('#nrow') );
$("#editPast").show('blind','',500,'');

eP 包含隐藏的 div editPast...

然后在取消功能中我把 eP 放回去:

setTimeout(function() {eP.appendTo($('#ePreplace')); }, 500);  (thanks adeneo!)

在我 tri.replaceAll 之前,尽管使用 setTimeout 它发生在......

所以我想我的问题是eP在#nrow中使用后不携带日期选择器状态,只是html。


固定的!

更改eP.appendTo$('#eP').appendTo以便从 dom 而不是原始变量中获取它。哎呀!感谢您的评论让我重新思考这一点just detach()

4

1 回答 1

0

固定的!

将 eP.appendTo 更改为 $('#eP').appendTo 以便它从 dom 而不是原始变量中获取它。哎呀!感谢 adeneo 让我用你的“just detach()”评论重新思考这个问题!

感谢 NiftyDude 建议我也这样做......

于 2012-05-15T03:07:03.173 回答