2012-05-10 63 views
0

我有一些代碼,從一個動態構建表中刪除一個TR作爲jQuery對象(每個TR具有一個唯一的id:TRID):替代jQuery replaceAll()?

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的日期選擇器的形式,如果我嘗試編輯(或任何)行之後。我很難把它當成replaceAll線。如果我把它拿出來並通過再次構建來替換列表,它就可以正常工作(這也不是超時)。

那麼是否有另一種方法來取代tr'newr'與jquery對象'tri'而不使用replaceAll(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,雖然有t他setTimeTime它發生後......

所以我想我的問題是,eP不會在#nrow中使用datepicker狀態後,只是HTML。


固定!

更改eP.appendTo$('#eP').appendTo以便它從dom取代原來的變量。哎呀!感謝您讓我重新考慮這個just detach()評論!

+1

不要傳遞一個字符串'setTimeout' – SLaks

+1

說什麼SLaks,只是[分離()](http://api.jquery.com/detach /)表單,你已經在別處使用它了。如果你只是在元素之間切換,你可能只是隱藏/顯示它們,而不是從DOM中刪除它們。 – adeneo

+0

Slaks,不是我第一次聽到這樣的消息,但我一直沒能弄清楚如何在不把它放在引號中。如果我把引號拿走,它不會等待400毫秒,它只是立即執行。 –

回答

0

固定!

已將eP.appendTo更改爲$('#eP')。appendTo,以便它從dom中取代原始變量。哎呀!感謝adeneo讓我重新考慮這個問題,你只需'detach()'評論!

感謝NiftyDude的建議我這樣做太...