2014-11-03 70 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