jQuery-DOM节点的删除
来源:互联网 发布:云计算与hadoop 编辑:程序博客网 时间:2024/05/17 01:44
本文转自慕课网
empty()的基本用法
要移除页面上节点是开发者常见的操作,jQuery提供了几种不同的方法用来处理这个问题,这里我们开仔细了解下empty方法
empty 顾名思义,清空方法,但是与删除又有点不一样,因为它只移除了 指定元素中的所有子节点。
这个方法不仅移除子元素(和其他后代元素),同样移除元素里的文本。因为,根据说明,元素里任何文本字符串都被看做是该元素的子节点。请看下面的HTML:
<div class="hello"><p>慕课网</p></div>
如果我们通过empty方法移除里面div的所有元素,它只是清空内部的html代码,但是标记仍然留在DOM中
//通过empty处理$('.hello').empty()//结果:<p>慕课网</p>被移除<div class="hello"></div>
remove()的有参用法和无参用法
remove与empty一样,都是移除元素的方法,但是remove会将元素自身移除,同时也会移除元素内部的一切,包括绑定的事件及与该元素相关的jQuery数据。
例如一段节点,绑定点击事件
<div class="hello"><p>慕课网</p></div>$('.hello').on("click",fn)
如果不通过remove方法删除这个节点其实也很简单,但是同时需要把事件给销毁掉,这里是为了防止"内存泄漏",所以前端开发者一定要注意,绑了多少事件,不用的时候一定要记得销毁
通过remove方法移除div及其内部所有元素,remove内部会自动操作事件销毁方法,所以使用使用起来非常简单
//通过remove处理$('.hello').remove()//结果:<div class="hello"><p>慕课网</p></div> 全部被移除//节点不存在了,同事事件也会被销毁
remove表达式参数:
remove比empty好用的地方就是可以传递一个选择器表达式用来过滤将被移除的匹配元素集合,可以选择性的删除指定的节点
我们可以通过$()选择一组相同的元素,然后通过remove()传递筛选的规则,从而这样处理
对比右边的代码区域,我们可以通过类似于这样处理
$("p").filter(":contains('3')").remove()
empty和remove区别
要用到移除指定元素的时候,jQuery提供了empty()与remove([expr])二个方法,两个都是删除元素,但是两者还是有区别
empty方法
- 严格地讲,empty()方法并不是删除节点,而是清空节点,它能清空元素中的所有后代节点
- empty不能删除自己本身这个节点
remove方法
- 该节点与该节点所包含的所有后代节点将同时被删除
- 提供传递一个筛选的表达式,用来指定删除选中合集中的元素
以上就是二者的区别,我们具体通过右边代码部分加深理解
保留数据的删除操作detach()
如果我们希望临时删除页面上的节点,但是又不希望节点上的数据与事件丢失,并且能在下一个时间段让这个删除的节点显示到页面,这时候就可以使用detach方法来处理
detach从字面上就很容易理解。让一个web元素托管。即从当前页面中移除该元素,但保留这个元素的内存模型对象。
来看看jquery官方文档的解释:
这个方法不会把匹配的元素从jQuery对象中删除,因而可以在将来再使用这些匹配的元素。与remove()不同的是,所有绑定的事件、附加的数据等都会保留下来。$("div").detach()这一句会移除对象,仅仅是显示效果没有了。但是内存中还是存在的。当你append之后,又重新回到了文档流中。就又显示出来了。
当然这里要特别注意,detach方法是JQuery特有的,所以它只能处理通过JQuery的方法绑定的事件或者数据
detach()和remove()区别
JQuery是一个很大强的工具库,在工作中开发中,可是有些方法还是因为不常用到,或是没有注意到而被我们而忽略。
remove()和detach()可能就是其中的一个,可能remove()我们用得比较多,而detach()就可能会很少了
通过一张对比表来解释2个方法之间的不同
方法名
参数
事件及数据是否也被移除
元素自身是否被移除
remove
支持选择器表达
是
是(无参数时),有参数时要根据参数所涉及的范围
detach
参数同remove
否
情况同remove
remove:移除节点
- 无参数,移除自身整个节点以及该节点的内部的所有节点,包括节点上事件与数据
- 有参数,移除筛选出的节点以及该节点的内部的所有节点,包括节点上事件与数据
detach:移除节点
- 移除的处理与remove一致
- 与remove()不同的是,所有绑定的事件、附加的数据等都会保留下来
- 例如:$("p").detach()这一句会移除对象,仅仅是显示效果没有了。但是内存中还是存在的。当你append之后,又重新回到了文档流中。就又显示出来了。
- jQuery-DOM节点的删除
- JQuery删除DOM节点的方法
- DOM节点的删除
- 3.2.4: jQuery的DOM操作之删除节点
- jquery DOM节点删除之empty()的基本用法
- jquery Dom操作_删除节点
- Jquery中的DOM操作 (三.删除节点)
- jQuery中DOM节点删除、复制、替换、
- 删除DOM节点的函数
- DOM删除节点的操作
- jQuery-DOM节点的创建
- jQuery-DOM节点的插入
- jQuery节点操作,jQuery插入节点,jQuery删除节点,jQuery Dom操作
- JS对DOM节点的操作--增加节点,删除节点
- jquery DOM节点删除之remove()的有参用法和无参用法
- js删除空白节点的函数(DOM)
- dom节点的添加与删除
- js的DOM添加删除替换节点
- android讲义 2016/5/8
- php常用函数-数学
- 数据结构(严蔚敏)第四章 串 实例——索引表
- java中sleep和wait的区别
- 提高篇项目1(1)——函数版星号图
- jQuery-DOM节点的删除
- 在使用xutils时post请求传递中文到服务端Mysql数据库出现中文乱码。
- 语法篇2之运算符
- Android SlidingMenu 环境配置
- c++第5次作业
- 在wamp环境中进入phpMyAdmin的报错处理方法
- thinkphp新增一个模块
- 打包上线流程
- ACM3-1006