替代jQuery replaceAll()?

时间:2012-05-10 23:50:54

标签: javascript jquery jquery-ui html-table

我有一些代码从动态构建的表中删除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系列。如果我把它取出并通过再次构建它来替换列表它可以正常工作(它也不是超时)。

那么有没有另一种方法用jquery对象'tri'替换tr'newr'而不使用replaceAll(replaceWith也不起作用)?

编辑:

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

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()评论让我重新考虑这个问题!

1 个答案:

答案 0 :(得分:0)

固定!

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

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