jQuery中删除方法empty(),remove()和detach()的区别
empty():清空匹配的元素集合中所有的子节点,自身节点和事件都未被删除。
remove():这个方法不会把匹配的元素从jQuery对象中删除,因而可以在将来再使用这些匹配的元素。但除了这个元素本身得以保留之外,其他的比如绑定的事件,附加的数据等都会被移除。
detach():这个方法不会把匹配的元素从jQuery对象中删除,因而可以在将来再使用这些匹配的元素。与remove()不同的是,所有绑定的事件、附加的数据等都会保留下来。
举个栗子:
<body>
<div id="div1" style="height: 100px;width: 300px;border: 1px solid black;background: yellow;">
this is some text in the div.
<p id="panel">pppp</p>
<p>two ppppppp</p>
</div>
<button>删除div元素</button>
</body>
empty():清空节点,保留自身。
$('button').click(function () {
    $('#div1').empty();
})
效果:

remove():删除被选元素极其子元素。
$('button').click(function () {
    $('#div1').remove();
})
效果:

detach()方法同detach,但是可以保留jquery相关的数据和绑定事件。
 $('#panel').hover(function () {
     $(this).css('color','red');
 })
     var deleteP = $('#panel').detach();
     $('#div1').append(deleteP);
效果:

如果用remove()不会保留数据和绑定事件。
$('#panel').hover(function () {
    $(this).css('color','red');
})
    var deleteP = $('#panel').remove();
    $('#div1').append(deleteP);
效果:p不会改变颜色,hover不起作用

关于追加之后p跑到下边问题:
首先,你通过$("p").detach()把上面的p给“删除/隐藏”了,实际上p还是存在的,只是你看不到了。
然后你又用
$("body").append($("p").detach());
向body中添加元素,这个元素其实还是p。
不是p跑到下面,而是你把p给“复制”了一个并添加到最下面,原来的p给隐藏了。
提示:如需移除元素,但保留数据和事件,请使用 detach() 方法。
提示:如需移除元素及它的数据和事件,请使用 remove() 方法。
提示:如只需从被选元素移除内容,请使用 empty() 方法。
jQuery中删除方法empty(),remove()和detach()的区别的更多相关文章
- jQuery 元素移除empty() remove()与detach()的区别?
		@1.empty() 删除匹配元素集合中所有的后代字节点元素: <p>hello<span>world</span></p> $("p&quo ... 
- 探索jquery方法中empty,remove与detach的区别
		最近一直疑惑此三种方法的具体区别在于何处,随即想弄明白其具体的区别,看了一些说明,也依照官方文档,终于把这三个方法弄明白了,果然功夫不负有心人,继续努力. 上正文,先简单介绍下这三种方法 .empty ... 
- 转载JQuery 中empty, remove 和 detach的区别
		转载 http://www.cnblogs.com/lisongy/p/4109420.html .empty() 描述: 从DOM中移除集合中匹配元素的所有子节点. 这个方法不接受任何参数. 这个 ... 
- jQuery中删除节点方法remove()、detach()、empty()分析
		jQuery中提供了三种删除节点的方法:remove().detach().empty(),本文详细分析这三种方法. 最容易区分的是empty(),该方法严格上属于“清空节点”,即删除其子节点,自身并 ... 
- JavaScript 中 empty、remove 和 detach的区别
		内容 empty.remove 和 detach的区别 jQuery 操作 DOM 之删除节点 方法名 元素所绑定的事件及数据是否也被移除 作用 $(selector).empty() 是 从被选元素 ... 
- Jquery中删除元素方法
		empty用来删除指定元素的子元素,remove用来删除元素,或者设定细化条件执行删除 语法: empty() remove(expr); empty用来删除指定元素的子元素,remove用来删除元素 ... 
- jquery 中remove()与detach()的区别
		remove()与detach()方法都是从dom中删除所有的元素 两者的共同之处在于都不会把匹配的元素从jQuery对象中删除. 不同之处在于用remove()删除的元素,除了元素被保留,其他的在这 ... 
- jQuery的remove和detach的区别
		1.remove([expr]) 概述:从DOM中删除所有匹配的元素. 这个方法不会把匹配的元素从jQuery对象中删除,因而可以在将来再使用这些匹配的元素.但除了这个元素本身得以保留之外,其他的 ... 
- 关于Jquery中ajax方法data参数用法的总结
		data 发送到服务器的数据.将自动转换为请求字符串格式.GET 请求中将附加在 URL 后.查看 processData 选项说明以禁止此自动转换.必须为 Key/Value 格式.如果为数组,jQ ... 
随机推荐
- js中this最简单清晰的解释
			引自 https://www.cnblogs.com/huangwentian/p/6854472.html#commentform ① this指向的,永远只可能是对象! ② this ... 
- git 远程分支回滚
			git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id [本地代码库回滚]: git reset --hard commit-id :回滚到commit-id,讲commit-id ... 
- C/C++常见错误
			1.段错误 段错误:指的是访问了不可访问的内容,内存要么是不存在的,要么是受到系统保护的. 如:1.释放了不存在的内存(堆内存) ; free a; 2.代码被重复定义了 往往是由于头文件被重复定义了 ... 
- C# .NET newtonsoft.json 多版本冲突解决
			A.DLL 引用了6.0 的 newtonsoft.json (V2 运行时),B.DLL 引用了10.0 的 newtonsoft.json (V4 运行时). 可以在.CONFIG RUNTIM ... 
- Ubuntu上的MySQL可以远程访问
			1. 3306端口是不是没有打开? 使用nestat命令查看3306端口状态: ~# netstat -an | grep 3306 tcp 0 0 127.0.0.1:330 ... 
- SpringBoot启动源码探究---getRunListener()
			该方法目的是获取SpringApplicationRunListener getRunListener()-----调用----> getSpringFactoriesInstances()-- ... 
- ubuntu16.04 install qtcreator
			1. 安装相关软件,搭建环境 sudo apt install qt-creator sudo apt install qt5-default source python35/bin/activate ... 
- source insight 中文乱码解决方法
			options->preferences -> Files-> default encoding: 选择 GB2312 CP:936 
- Prometheus 监控Haproxy
			Prometheus 监控Haproxy 普罗米修斯是一个完整的监控和趋势系统,包括基于时间序列数据的内置和主动刮削,存储,查询,绘图和警报,以下使用Prometheus+grafana对Haprox ... 
- paiza
			<?php $str1 = ('paiza'); $str2 = ('apple'); $str3 = ('letter'); function bigTower($str1, $str2, $ ... 
