章节
问答
课签
笔记
评论
占位
占位

DOM节点删除之保留数据的删除操作detach()

如果我们希望临时删除页面上的节点,但是又不希望节点上的数据与事件丢失,并且能在下一个时间段让这个删除的节点显示到页面,这时候就可以使用detach方法来处理

detach从字面上就很容易理解。让一个web元素托管。即从当前页面中移除该元素,但保留这个元素的内存模型对象。

来看看jquery官方文档的解释:

这个方法不会把匹配的元素从jQuery对象中删除,因而可以在将来再使用这些匹配的元素。与remove()不同的是,所有绑定的事件、附加的数据等都会保留下来。
$("div").detach()这一句会移除对象,仅仅是显示效果没有了。但是内存中还是存在的。当你append之后,又重新回到了文档流中。就又显示出来了。

当然这里要特别注意,detach方法是JQuery特有的,所以它只能处理通过JQuery的方法绑定的事件或者数据

参考右边的代码区域,通过 $("p").detach()把所有的P元素删除后,再通过append把删除的p元素放到页面上,通过点击文字,可以证明事件没有丢失

任务

?不会了怎么办
||
1
2
<html>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
提交
重置代码
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布

最新回答 / 学网页的摄机师
额,懂了,这是给p元素绑定的默认点击事件

最新回答 / qq_Sakuragi10_0
啊啊抱歉这个问题解决了,确实不能再添加,但是还有一个问题,为什么会是先alert再删除啊。。。

最新回答 / 慕瓜3026100
hjkj

最新回答 / 业余奶茶品鉴师
把 <...code...>改成 <...code...>就好了。因为在点击事件外已经定义了全局变量s,点击事件里又定义了一个s,这里的是局部变量,给这个局部变量赋值,并不能作用于全局变量。所以添加不了。望采纳

最新回答 / 慕勒8594096
   <html><head>     <meta http-equiv="Content-type" content="text/html; charset=utf-8" />    <script src="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script><meta charset="UTF-8"><title>jQuery删除节点之e...

最赞回答 / 小季乐乐4412490
多敲了几遍理解了去重的含义了第一次删除的时候p = $("p").detach(),jQuery会找到$("p")并执行删除方法detach()然后保存到p中,第二次删除的时候p = $("p").detach(),jQuery会找不到$("p") 会返回一个underfind保存到p中   总结:当删除第二次的时候就p被赋值为了underfind,所以点击添加的时候p的之就为underfind,添加不了去重的意义在于,点击删除按钮的时候如果页面没有p标签就返回true,return执行结束,如果有p标签...

最赞回答 / 未定义丶
作用是定义全局变量p,删除了就相当于 p=$('p').detach()这里从本来的 给p赋值 变成了 隐式定义全局p 了,这种定义方式不好

已采纳回答 / qq_慕盖茨8361330
他只是举例子 实际上都可以的

最新回答 / 小季乐乐4412490
这一节课知识点总结一下:第二个是:empty()和remove()和detach()的区别第三个是:使用使用detach()的时候需要注意的地方:比如为什么点击时添加判断

最新回答 / 耿直的杨耿直
document.body.append(p);魔鬼一般的想法。。。。。原代码中p = $("p").detach()在p里存的jquery节点你这里用的是原生js,当然应该传dom节点才对

最新回答 / 风起临冬
if那句话意思是,如果p没有长度了,那么函数不进行操作,如果有长度,就临时删除p。防止你重复删除。

已采纳回答 / 小呆子打算好好学习
选中所有p 元素  给其添加点击事件    给匿名函数传入 event 对象 e.target  是点击的当前元素,返回触发此事件的元素(事件的目标节点)。     显示当前元素的内容。

已采纳回答 / 小呆子打算好好学习
 var p;删除的内容保存在p里面了。

最新回答 / fighting加油吧
之前的p就相当于你现在写的aa,它只是一个变量里面保存了$("p").detach()删除的东西,如果想要加回来那么应该append(aa)
全部 我要发布
最热 最新
只看我的

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

账号登录 验证码登录

遇到问题
忘记密码

代码语言