删除元素,但保持所有数据和事件绑定

时间:2014-11-03 18:49:30

标签: javascript jquery

我有一个可以在页面上的任何指定容器中注入的容器(如弹出窗口)。弹出窗口应该有一个删除父元素的按钮。我尝试使用.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。:我试图在身体上追加并隐藏弹出窗口,但这不是我需要的。

1 个答案:

答案 0 :(得分:13)

您可以使用.detach()

  

.detach()方法与.remove()相同,但.detach()除外   保持所有jQuery数据与删除的元素相关联。这个   当要删除的元素要重新插入时,方法很有用   以后的DOM。

您还可以使用返回值将分离元素附加到DOM:

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

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