首页 > 编程笔记 > JavaScript笔记 > jQuery DOM操作

jQuery detach()和empty()方法

jQuery 删除元素除了上节教程介绍的 remove() 方法外,还有 detach() 和 empty() 方法,本节教程就对这两个方法进行介绍。

jQuery detach()方法

在 jQuery 中,detach() 和 remove() 的功能虽然相似,都是将某个元素及其内部所有内容删除,但是两者也有明显的区别。
语法:

$().detach()


举例:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title></title>
  6. <script src="js/jquery-1.12.4.min.js"></script>
  7. <script>
  8. $(function () {
  9. $("li").click(function () {
  10. alert("欢迎来到新宝库!")
  11. });
  12. $("#btn").click(function () {
  13. var $li = $("li:nth-child(4)").remove();
  14. $($li).appendTo("ul");
  15. });
  16. })
  17. </script>
  18. </head>
  19. <body>
  20. <ul>
  21. <li>HTML</li>
  22. <li>CSS</li>
  23. <li>JavaScript</li>
  24. <li>jQuery</li>
  25. <li>Vue.js</li>
  26. </ul>
  27. <input id="btn" type="button" value="删除" />
  28. </body>
  29. </html>
默认情况下,预览效果如图 1 所示。
默认效果
图 1:默认效果

我们点击【删除】按钮后,此时浏览器预览效果如图 2 所示。
点击按钮后的效果
图 2:点击按钮后的效果
 
在这个例子中,我们为每一个 li 元素添加一个点击事件,点击任何一个 li 元素都会弹出一个对话框。在我们点击【删除】按钮后,<li>jQuery</li> 这一项就会被添加到 ul 元素内部的末尾处。但是这个时候,如果再去点击 <li>jQuery</li> 这一项,会发现之前绑定的点击事件被删除了,并不会弹出对话框。

当我们把 remove() 替换成 detach() 后,可以发现 li 元素被删除后又重新被添加使用时,该元素之前绑定的点击事件依然存在。对于 remove() 和 detach() 这两个方法,可以总结为这一点:元素被删除后又重新被添加,如果不希望该元素保留原来绑定的事件,应该用 remove() 方法;如果希望该元素保留原来绑定的事件,应该使用 detach() 方法。

jQuery empty()方法

在 jQuery 中,我们可以使用 empty() 方法来“清空”某个后代元素。

语法:

$().empty()


举例:
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title></title>
  6. <script src="js/jquery-1.12.4.min.js"></script>
  7. <script>
  8. $(function () {
  9. $("#btn").click(function () {
  10. $("ul li:nth-child(4)").empty();
  11. });
  12. })
  13. </script>
  14. </head>
  15. <body>
  16. <ul>
  17. <li>HTML</li>
  18. <li>CSS</li>
  19. <li>JavaScript</li>
  20. <li>jQuery</li>
  21. <li>Vue.js</li>
  22. </ul>
  23. <input id="btn" type="button" value="删除" />
  24. </body>
  25. </html>
默认情况下,预览效果如图 3 所示。
默认效果
图 3:默认效果

我们点击【删除】按钮后,此时预览效果如图 4 所示。
点击按钮后的效果
图 4:点击按钮后的效果

remove() 和 detach() 这两个方法在删除元素时,会将自身元素以及所有后代元素一并删除。empty() 方法仅仅是删除后代元素,并不会删除自身元素。

所有教程

优秀文章