探索jquery方法中empty,remove与detach的区别
最近一直疑惑此三种方法的具体区别在于何处,随即想弄明白其具体的区别,看了一些说明,也依照官方文档,终于把这三个方法弄明白了,果然功夫不负有心人,继续努力。
上正文,先简单介绍下这三种方法
.empty() 描述: 从DOM中移除集合中匹配元素的所有子节点。
这个方法不接受任何参数。
这个方法不仅移除子元素(和其他后代元素),同样移除元素里的文本。因为,根据说明,元素里任何文本字符串都被看做是该元素的子节点。请看下面的HTML:
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
我们可以移除里面的任何元素
$('.hello').empty();
结果文本 Hello
文本被删除:
<div class="container">
<div class="hello"></div>
<div class="goodbye">Goodbye</div>
</div>
如果 <div class="hello">
里面包含任何数量的嵌套元素,他们也会被移走。
为了避免内存泄漏,jQuery先移除子元素的数据和事件处理函数,然后移除子元素。
如果你想删除元素,不破坏他们的数据或事件处理程序(这些绑定的信息还可以在之后被重新添加回来),请使用.detach()
代替 。
.detach() 描述: 从DOM中去掉所有匹配的元素。
.detach()
方法和.remove()
一样, 除了 .detach()
保存所有jQuery数据和被移走的元素相关联。当需要移走一个元素,不久又将该元素插入DOM时,这种方法很有用。
例子:
<!DOCTYPE html>
<html>
<head>
<style>p { background:yellow; margin:6px ; } p.off { background: black; }</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<p>Hello</p>
how are
<p>you?</p>
<button>Attach/detach paragraphs</button>
<script>
$("p").click(function(){
$(this).toggleClass("off");
});
var p;
$("button").click(function(){
if ( p ) {
p.appendTo("body");
p = null;
} else {
p = $("p").detach();
}
});</script> </body>
</html>
.remove 描述: 将匹配元素集合从DOM中删除。(同时移除元素上的事件及 jQuery 数据。)
和 .empty()
相似。.remove()
将元素移出DOM。 当我们想将元素自身移除时我们用 .remove()
,同时也会移除元素内部的一切,包括绑定的事件及与该元素相关的jQuery数据。要删除的元素不删除数据和事件的情况下,使用.detach()
来代替。
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
可以移除任何想要移除的元素:
$('.hello').remove();
结果如下:
<div class="container">
<div class="goodbye">Goodbye</div>
</div>
如果<div class="hello">
元素里面有子元素,他们同样会被移除。还有元素上的事件及 jQuery 数据也会被删除。
我们也可以添加一个可选的选择器参数来过滤匹配的元素。例如,前面的代码可以重写为:
$('div').remove('.hello');
结果将一样:
<div class="container">
<div class="goodbye">Goodbye</div>
</div>
例子:
Example: 将所有段落从DOM删除:
<!DOCTYPE html>
<html>
<head>
<style>p { background:yellow; margin:6px ; }</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<p>Hello</p>
how are
<p>you?</p>
<button>Call remove() on paragraphs</button>
<script>
$("button").click(function () {
$("p").remove();
});
</script> </body>
</html>
上面是一些基本概念,让大家久等了,经过本人的测试得出如下结论。empty()方法无参数,而且清空后的子集及文本无法进行还原。而detach()和remove()方法可以将其保存在一个变量中
如声明变量p 写成如下形式
var p=$('p').remove();
当需要从新添加时可以直接添加如下
p.appendTo("body");
这是detach()和remove()方法都有的功能。remove()较detach()不同的是remove()可以删除指定的类如remove(‘a’),而detach()不可这样操作,还要注意一点,当用remove()方法移除元素后,再进行添加,再子集的事件的不会存在,而detach()子集的事件还可执行。
如果不明白的或者不清楚的可以随时评论,大家一同学习与进步。
探索jquery方法中empty,remove与detach的区别的更多相关文章
- 转载JQuery 中empty, remove 和 detach的区别
转载 http://www.cnblogs.com/lisongy/p/4109420.html .empty() 描述: 从DOM中移除集合中匹配元素的所有子节点. 这个方法不接受任何参数. 这个 ...
- jQuery中删除方法empty(),remove()和detach()的区别
empty():清空匹配的元素集合中所有的子节点,自身节点和事件都未被删除. remove():这个方法不会把匹配的元素从jQuery对象中删除,因而可以在将来再使用这些匹配的元素.但除了这个元素本身 ...
- jQuery 元素移除empty() remove()与detach()的区别?
@1.empty() 删除匹配元素集合中所有的后代字节点元素: <p>hello<span>world</span></p> $("p&quo ...
- JavaScript 中 empty、remove 和 detach的区别
内容 empty.remove 和 detach的区别 jQuery 操作 DOM 之删除节点 方法名 元素所绑定的事件及数据是否也被移除 作用 $(selector).empty() 是 从被选元素 ...
- jquery 中remove()与detach()的区别
remove()与detach()方法都是从dom中删除所有的元素 两者的共同之处在于都不会把匹配的元素从jQuery对象中删除. 不同之处在于用remove()删除的元素,除了元素被保留,其他的在这 ...
- jquery中remove()与detach()的区别
说到删除节点,马上就会想到remove,不过原来还有一个detach,而且它们还是有区别的,就是detach保留了jquery的数据,而remove就会完全删除干净.所以如果在删除一个dom节点后还想 ...
- jQuery的remove和detach的区别
1.remove([expr]) 概述:从DOM中删除所有匹配的元素. 这个方法不会把匹配的元素从jQuery对象中删除,因而可以在将来再使用这些匹配的元素.但除了这个元素本身得以保留之外,其他的 ...
- FragmentTransation中的remove和detach有什么区别?
remove(): 从Activity中移除一个Fragment,如果被移除的Fragment没有添加到回退栈(回退栈后面会详细说),这个Fragment实例将会被销毁; detach(): 会将vi ...
- 在jQuery ajax中按钮button和submit的区别分析
在使用jQuery ajax的get方法进行页面传值,不能用submit,否则无刷新获取数据展示 点击submit提交按钮,sendPwd.php通过$_POST接收传过来的值,然后echo一段数据. ...
随机推荐
- occcont.cpp 925
将InitInstance()中调用的 InitATL() 替换为 AfxOleInit()即可.
- excel转换成oracle建表脚本
package excel2sql; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundE ...
- Vim常用匹配、查找、替换命令总结
以前都是从头开始找,最近处理log文件很多. 在vim 中输入 :1?XXXX 1的意思是文件的第一行 ?的意思是反向查找 XXXX就是你要找的关键字 更新:Linux 从末尾开始查找日志 tac c ...
- js进阶正则表达式实现过滤字符串(RegExp对象操作正则表达式)(正则:regular)(表达式:expression)
js进阶正则表达式实现过滤字符串(RegExp对象操作正则表达式)(正则:regular)(表达式:expression) 一.总结 1.str_replace:正则作用:高效快速匹配 2.break ...
- 使Sublime Text支持除UTF8外多种编码 - ConvertToUTF8
前几天,在使用了Sublime Text多天之后,感觉完全可以代替系统自带记事本,所以就通过其打开了一个记事本文件,但是打开之后尽然是乱码,在思考了一下之后想到记事本的编码是ANSI编码,那么这就应该 ...
- AngularJs压缩时须要注意的事项
因为AngularJS是通过控制器构造函数的參数名字来判断依赖服务名称的.所以假设你要压缩控制器的JS代码.它全部的參数也同一时候会被压缩,这时候依赖注入系统就不能正确的识别出服务了. 假如我们的Co ...
- VS2013 Qt5显示中文字符
VS2013上建立的Qt5project中显示中文字符的两种方式: 1. QStringLiteral("開始") 2. QString::fromLocal8Bit(" ...
- MapReduce 编程 系列九 Reducer数目
本篇介绍怎样控制reduce的数目.前面观察结果文件,都会发现通常是以part-r-00000 形式出现多个文件,事实上这个reducer的数目有关系.reducer数目多,结果文件数目就多. 在初始 ...
- App各种Icon及Launch image的尺寸和用途
App各种Icon及Launch image的尺寸和用途 IOS7,8 Asset iPhone 6 Plus (@3x) iPhone 6 and iPhone 5 (@2x) iPhone 4s ...
- erlang---启动参数学习/研究
erlang启动参数有3种:emulator flags, flags 和plain arguments. emulator flags 是以“+”开头的,用来控制模拟器的行为,附送一个非常实用的例子 ...