在jQuery中,想要删除元素,我们有以下3种方法。

  • (1)remove()
  • (2)detach()
  • (3)empty()

一、remove()

在jQuery中,我们可以使用remove()方法来将某个元素及其内部所有内容删除。

语法:

$().remove()

举例:remove()方法的使用

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="js/jquery-1.12.4.min.js"></script> <script> $(function () { $("#btn").click(function () { $("li:nth-child(4)").remove(); }) }) </script> </head> <body> <ul> <li>HTML</li> <li>CSS</li> <li>JavaScript</li> <li>jQuery</li> <li>Vue.js</li> </ul> <input id="btn" type="button" value="删除" /> </body> </html>

默认情况下,浏览器浏览器预览效果如下图所示。

当我们点击【删除】按钮后,此时浏览器预览效果如下图所示。

分析:

$("li:nth-child(4)").remove()表示删除ul元素下的第4个li元素。记住,在jQuery中,除了:nth-child()和:nth-of-type()这两个的下标是从1开始的,其他所有选择器或jQuery方法的下标都是从0开始的。

举例:remove()方法会返回一个值

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="js/jquery-1.12.4.min.js"></script> <script> $(function () { $("#btn").click(function () { //remove()可以将所选元素删除,并且返回被删除元素 var $li = $("li:nth-child(4)").remove(); $($li).appendTo("ul"); }) }) </script> </head> <body> <ul> <li>HTML</li> <li>CSS</li> <li>JavaScript</li> <li>jQuery</li> <li>Vue.js</li> </ul> <input id="btn" type="button" value="删除" /> </body> </html>

默认情况下,浏览器预览效果如下图所示。

我们点击【删除】按钮后,此时浏览器预览效果如下图所示。

分析:

我们要清楚一点,就是remove()方法可以返回一个值,其中返回值为被删除的元素。也就是说,虽然这个元素被删除了,但是我们可以把返回值赋值给一个变量,然后再次使用被删除的元素。

在这个例子中,我们使用remove()方法删除<li>jQuery</li>这个元素。不过呢,我们将被删除的元素赋值给变量$li,然后就可以使用appendTo()方法将其添加到ul元素内部的末尾处。

实际上,利用remove()方法会返回一个值的特点,我们可以轻松实现两个元素的互换,请看下面例子。

举例:互换元素

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> ul li:nth-child(2), ul li:nth-child(4) { background-color:Orange; } </style> <script src="js/jquery-1.12.4.min.js"></script> <script> $(function () { $("#btn").click(function () { //将内容为“CSS”这一个li删除,并赋值给$li1 var $li1 = $("li:nth-child(2)").remove(); //将内容为“jQuery”这一个li删除,并赋值给$li2 var $li2 = $("li:nth-child(3)").remove(); $($li1).insertAfter("ul li:nth-child(2)"); $($li2).insertBefore("ul li:nth-child(2)"); }) }) </script> </head> <body> <ul> <li>HTML</li> <li>CSS</li> <li>JavaScript</li> <li>jQuery</li> <li>Vue.js</li> </ul> <input id="btn" type="button" value="互换" /> </body> </html>

默认情况下,浏览器预览效果如下图所示。

我们点击【互换】按钮后,此时浏览器预览效果如下图所示。

分析:

在这个例子中,我们实现了内容为“CSS”和“jQuery”这两个li元素的互换。技巧就是借助了内容为“JavaScript”这个li元素作为参照物。虽然代码看起来很简单,不过要注意的地方并不少,小伙伴们最好自己亲自实践一下。

二、detach()

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

  • (1)remove()方法用于“彻底”删除元素。所谓的“彻底”,指的是不仅会删除元素,还会把元素绑定的事件删除。
  • (2)detach()方法用于“半彻底”删除元素。所谓的“半彻底”,指的是只会删除元素,不会把元素绑定的事件删除。

语法:

$().detach()

举例:

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="js/jquery-1.12.4.min.js"></script> <script> $(function () { $("li").click(function () { alert("欢迎来到绿叶学习网!") }); $("#btn").click(function () { var $li = $("li:nth-child(4)").remove(); $($li).appendTo("ul"); }); }) </script> </head> <body> <ul> <li>HTML</li> <li>CSS</li> <li>JavaScript</li> <li>jQuery</li> <li>Vue.js</li> </ul> <input id="btn" type="button" value="删除" /> </body> </html>

默认情况下,浏览器预览效果如下图所示。

当我们点击【删除】按钮后,此时浏览器预览效果如下图所示。

分析:

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

当我们把remove()替换成detach()后,可以发现li元素被删除然后被重新添加使用后,该元素之前绑定的点击事件依然存在。

对于remove()和detach()这两个方法,可以总结一下:元素被删除然后重新被添加,如果不希望该元素还保留原来绑定的事件,应该用remove()方法;如果希望该元素还保留原来绑定的事件,应该使用detach()方法。

三、empty()

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

语法:

$().empty()

举例:

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="js/jquery-1.12.4.min.js"></script> <script> $(function () { $("#btn").click(function () { $("ul li:nth-child(4)").empty(); }); }) </script> </head> <body> <ul> <li>HTML</li> <li>CSS</li> <li>JavaScript</li> <li>jQuery</li> <li>Vue.js</li> </ul> <input id="btn" type="button" value="删除" /> </body> </html>

默认情况下,浏览器预览效果如下图所示。

当我们点击【删除】按钮后,此时浏览器预览效果如下图所示。

分析:

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