老生常谈jquery中detach()和remove()的区别

作者:袖梨 2022-06-25

JQuery是一个很大强的工具库,在工作中开发中,可是有些方法还是因为不常用到,或是没有注意到而被我们而忽略。

remove()和detach()可能就是其中的一个,可能remove()我们用得比较多,而detach()就可能会很少了

通过一张对比表来解释2个方法之间的不同

方法名

参数

事件及数据是否也被移除

元素自身是否被移除

remove

支持选择器表达

是(无参数时),有参数时要根据参数所涉及的范围

detach

参数同remove

情况同remove

remove:移除节点

- 无参数,移除自身整个节点以及该节点的内部的所有节点,包括节点上事件与数据

- 有参数,移除筛选出的节点以及该节点的内部的所有节点,包括节点上事件与数据

detach:移除节点

- 移除的处理与remove一致

- 与remove()不同的是,所有绑定的事件、附加的数据等都会保留下来

- 例如:$("p").detach()这一句会移除对象,仅仅是显示效果没有了。但是内存中还是存在的。当你append之后,又重新回到了文档流中。就又显示出来了。

eq:

代码如下 复制代码

p {

border: 1px solid red;

}

给页面2个p元素节点绑定点击事件,点击后弹出自己本身的节点内容

元素p1,同时绑定点击事件

元素p2,同时绑定点击事件

通过点击2个按钮后观察方法处理的区别

//给页面上2个p元素都绑定时间

$('p').click(function(e) {

alert(e.target.innerHTML)

})

$("button:first").click(function() {

varp = $("p:first").remove();

p.css('color','red').html('p1通过remove处理后,点击该元素,事件丢失')

$("body").append(p);

});

$("button:last").click(function() {

varp = $("p:first").detach();

p.css('color','blue').text('p2通过detach处理后,点击该元素事件存在')

$("body").append(p);

});

相关文章

精彩推荐