4-5 DOM节点删除之detach()和remove()区别
本节编程练习不计算学习进度,请电脑登录imooc.com操作

DOM节点删除之detach()和remove()区别

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

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

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

方法名

参数

事件及数据是否也被移除

元素自身是否被移除

remove

支持选择器表达

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

detach

参数同remove

情况同remove

remove移除节点

detach移除节点

具体可以参考右边的代码区域的对比

任务

  1. <html>
  2.  
  3. <head>
  4. <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  5. <style type="text/css">
  6. p{
  7. border: 1px solid red;
  8. }
  9. </style>
  10. <script src="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script>
  11. </head>
  12.  
  13. <body>
  14. <h3>给页面2个p元素节点绑定点击事件,点击后弹出自己本身的节点内容</h3>
  15. <p>元素p1,同时绑定点击事件</p>
  16. <p>元素p2,同时绑定点击事件</p>
  17. <h3>通过点击2个按钮后观察方法处理的区别</h3>
  18. <button>点击通过remove处理元素p1</button>
  19. <button>点击通过detach处理元素p2</button>
  20. </body>
  21. <script type="text/javascript">
  22. //给页面上2个p元素都绑定时间
  23. $('p').click(function(e) {
  24. alert(e.target.innerHTML)
  25. })
  26.  
  27. $("button:first").click(function() {
  28. var p = $("p:first").remove();
  29. p.css('color','red').text('p1通过remove处理后,点击该元素,事件丢失')
  30. $("body").append(p);
  31. });
  32.  
  33. $("button:last").click(function() {
  34. var p = $("p:first").detach();
  35. p.css('color','blue').text('p2通过detach处理后,点击该元素事件存在')
  36. $("body").append(p);
  37. });
  38. </script>
  39. </script>
  40.  
  41. </html>
  42.  
下一节