我有一些代码从动态构建的表中删除一个 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()
!