2014-11-03 78 views
5

我有一個容器可以注入頁面上的任何指定容器(如彈出)。彈出窗口應該有一個刪除父元素的按鈕。我嘗試使用.remove()刪除父元素,但是,它也刪除彈出窗口及其事件。我希望它刪除彈出(我仍然有參考),但是,我不希望.remove解除事件。刪除元素,但保持所有數據和事件綁定

到目前爲止,我得到這個:

var popup = $('#popup'); 

$('body > div').on('click', function() { 
    popup.appendTo($(this)); 
}); 

popup.find('button').on('click', function() { 
    $(this).closest('div:not(#popup)').remove(); 
}); 

http://jsfiddle.net/volter9/0zms29g1/

基本上,有沒有辦法刪除元素而不刪除其數據或事件?

感謝您的關注!

P.S .:我試圖追加和隱藏彈出的身體,但它不是我所需要的。

+4

基本上你似乎要求http://api.jquery.com/detach/ – Louis 2014-11-03 18:51:32

+0

謝謝@Louis! :) – volter9 2014-11-03 19:38:29

回答

11

可以使用.detach()

.detach()方法是一樣的.remove(),不同之處在於.detach() 保持與移除的元件相關聯的所有的jQuery的數據。此方法在稍後將已移除的元素重新插入到 DOM中時非常有用。

您也可以通過使用返回值追加分離元件到DOM:

var div = $("div").detach(); 

$(div).appendTo("body"); 
+1

謝謝,這工作,因爲我需要! :) – volter9 2014-11-03 18:55:23