转载 http://www.cnblogs.com/lisongy/p/4109420.html

 .empty()  描述: 从DOM中移除集合中匹配元素的所有子节点。

 这个方法不接受任何参数。

 这个方法不仅移除子元素(和其他后代元素),同样移除元素里的文本。因为,根据说明,元素里任何文本字符串都被看做是该元素的子节点。请看下面的HTML:

<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>

我们可以移除里面的任何元素

1 $('.hello').empty();

结果文本 Hello文本被删除:

1 <div class="container">
2 <div class="hello"></div>
3 <div class="goodbye">Goodbye</div>
4 </div>

如果 <div class="hello">里面包含任何数量的嵌套元素,他们也会被移走。

为了避免内存泄漏,jQuery先移除子元素的数据和事件处理函数,然后移除子元素。

如果你想删除元素,不破坏他们的数据或事件处理程序(这些绑定的信息还可以在之后被重新添加回来),请使用.detach()代替 。

.detach()   描述: 从DOM中去掉所有匹配的元素。

.detach() 方法和.remove()一样, 除了 .detach()保存所有jQuery数据和被移走的元素相关联。当需要移走一个元素,不久又将该元素插入DOM时,这种方法很有用。

例子:

 1 <!DOCTYPE html>
2 <html>
3 <head>
4 <style>p { background:yellow; margin:6px 0; } p.off { background: black; }</style>
5 <script src="http://code.jquery.com/jquery-latest.js"></script>
6 </head>
7 <body>
8 <p>Hello</p>
9 how are
10 <p>you?</p>
11 <button>Attach/detach paragraphs</button>
12 <script>
13 $("p").click(function(){
14 $(this).toggleClass("off");
15 });
16 var p;
17 $("button").click(function(){
18 if ( p ) {
19 p.appendTo("body");
20 p = null;
21 } else {
22 p = $("p").detach();
23 }
24 });</script>
25
26 </body>
27 </html>

.remove   描述: 将匹配元素集合从DOM中删除。(同时移除元素上的事件及 jQuery 数据。)

和 .empty()相似。.remove() 将元素移出DOM。 当我们想将元素自身移除时我们用 .remove(),同时也会移除元素内部的一切,包括绑定的事件及与该元素相关的jQuery数据。要删除的元素不删除数据和事件的情况下,使用.detach()来代替。

1 <div class="container">
2 <div class="hello">Hello</div>
3 <div class="goodbye">Goodbye</div>
4 </div>

可以移除任何想要移除的元素:

$('.hello').remove();

结果如下:

1 <div class="container">
2 <div class="goodbye">Goodbye</div>
3 </div>

如果<div class="hello">元素里面有子元素,他们同样会被移除。还有元素上的事件及 jQuery 数据也会被删除。

我们也可以添加一个可选的选择器参数来过滤匹配的元素。例如,前面的代码可以重写为:

1 $('div').remove('.hello');

结果将一样:

1 <div class="container">
2 <div class="goodbye">Goodbye</div>
3 </div>

例子:

Example: 将所有段落从DOM删除:

 1 <!DOCTYPE html>
2 <html>
3 <head>
4 <style>p { background:yellow; margin:6px 0; }</style>
5 <script src="http://code.jquery.com/jquery-latest.js"></script>
6 </head>
7 <body>
8 <p>Hello</p>
9 how are
10 <p>you?</p>
11 <button>Call remove() on paragraphs</button>
12 <script>
13 $("button").click(function () {
14 $("p").remove();
15 });
16 </script>
17
18 </body>
19 </html>

上面是一些基本概念,让大家久等了,经过本人的测试得出如下结论。empty()方法无参数,而且清空后的子集及文本无法进行还原。而detach()和remove()方法可以将其保存在一个变量中

如声明变量p 写成如下形式

1 var p=$('p').remove();

当需要从新添加时可以直接添加如下

1  p.appendTo("body");

这是detach()和remove()方法都有的功能。remove()较detach()不同的是remove()可以删除指定的类如remove(‘a’),而detach()不可这样操作,还要注意一点,当用remove()方法移除元素后,再进行添加,再子集的事件的不会存在,而detach()子集的事件还可执行。

如果不明白的或者不清楚的可以随时评论,大家一同学习与进步。

最新文章

  1. 深度学习入门教程UFLDL学习实验笔记三:主成分分析PCA与白化whitening
  2. kali更新源
  3. 【PHP构造方法和析构方法的使用】
  4. ASP.NET Web API 跨域访问
  5. WebApi传参总动员(五)
  6. Java中的线程
  7. Windows 下使用 GNUstep 编译并运行 Objective-C 程序
  8. centos 6.4下设置输入法
  9. 第一堂java web课
  10. EXCEL VBA运行不显示系统提示
  11. 【转】关于FPGA中建立时间和保持时间的探讨
  12. 【转】 Android ListView与Button的显示----不错不错
  13. opencv分水岭算法对图像进行切割
  14. Cocos2d-x V2.x -- 开发进阶和高级实例教程(一) 转
  15. Windows用户模式下注入方式总结
  16. Mysq 索引优化
  17. 美团、java后台实习、面经
  18. IM多类型holder封装
  19. 十分钟了解HTTPS
  20. Mysql 5.7优化

热门文章

  1. 面试题_1_to_16_多线程、并发及线程的基础问题
  2. httpRequest对象常用的方法
  3. jquery图表插件morris.js参数详解和highcharts图表插件
  4. CentOS6.6安装mysql出现的问题
  5. svn 提交失败 更新失败 提示 已经锁定
  6. textview设置字体的行距和字间距
  7. UVA 11374 Airport Express 机场快线(单源最短路,dijkstra,变形)
  8. HDU 2433 Travel (最短路,BFS,变形)
  9. 04day2
  10. POJ 1833 排列