老生常谈jquery中detach()和remove()的区别


Posted in Javascript onMarch 02, 2017

JQuery是一个很大强的工具库,在工作中开发中,可是有些方法还是因为不常用到,或是没有注意到而被我们而忽略。

remove()和detach()可能就是其中的一个,可能remove()我们用得比较多,而detach()就可能会很少了

通过一张对比表来解释2个方法之间的不同

方法名 参数 事件及数据是否也被移除 元素自身是否被移除
remove 支持选择器表达 是(无参数时),有参数时要根据参数所涉及的范围
detach 参数同remove 情况同remove

remove:移除节点

- 无参数,移除自身整个节点以及该节点的内部的所有节点,包括节点上事件与数据

- 有参数,移除筛选出的节点以及该节点的内部的所有节点,包括节点上事件与数据

detach:移除节点

- 移除的处理与remove一致

- 与remove()不同的是,所有绑定的事件、附加的数据等都会保留下来

- 例如:$("p").detach()这一句会移除对象,仅仅是显示效果没有了。但是内存中还是存在的。当你append之后,又重新回到了文档流中。就又显示出来了。

eq:

<html>

<head>
  <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
  <style type="text/css">
    p {
      border: 1px solid red;
    }
  </style>
  <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>

<body>
<h3>给页面2个p元素节点绑定点击事件,点击后弹出自己本身的节点内容</h3>

<p>元素p1,同时绑定点击事件</p>

<p>元素p2,同时绑定点击事件</p>

<h3>通过点击2个按钮后观察方法处理的区别</h3>
<button>点击通过remove处理元素p1</button>
<button>点击通过detach处理元素p2</button>
</body>
<script type="text/javascript">
  //给页面上2个p元素都绑定时间 
  $('p').click(function (e) {
    alert(e.target.innerHTML)
  })

  $("button:first").click(function () {
    var p = $("p:first").remove();
    p.css('color', 'red').html('p1通过remove处理后,点击该元素,事件丢失')
    $("body").append(p);
  });

  $("button:last").click(function () {
    var p = $("p:first").detach();
    p.css('color', 'blue').text('p2通过detach处理后,点击该元素事件存在')
    $("body").append(p);
  });
</script>
</script>

</html >

以上这篇老生常谈jquery中detach()和remove()的区别就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
extjs 学习笔记 四 带分页的grid
Oct 20 Javascript
关于window.pageYOffset和document.documentElement.scrollTop
Apr 05 Javascript
将Datatable转化成json发送前台实现思路
Sep 06 Javascript
Javascript 颜色渐变效果的实现代码
Oct 01 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
Jun 17 Javascript
JS实现样式清新的横排下拉菜单效果
Oct 09 Javascript
原生js实现百叶窗效果及原理介绍
Apr 12 Javascript
原生JS实现简单放大镜效果
Feb 08 Javascript
Bootstrap按钮组实例详解
Jul 03 Javascript
加快Vue项目的开发速度的方法
Dec 12 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
May 09 Javascript
搭建vscode+vue环境的详细教程
Aug 31 Javascript
jQuery实用密码强度检测
Mar 02 #Javascript
通过npm引用的vue组件使用详解
Mar 02 #Javascript
完美解决spring websocket自动断开连接再创建引发的问题
Mar 02 #Javascript
vue-dialog的弹出层组件
May 25 #Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
Mar 01 #Javascript
基于Bootstrap的网页设计实例
Mar 01 #Javascript
JS中的作用域链
Mar 01 #Javascript
You might like
操作Oracle的php类
2006/10/09 PHP
打造计数器DIY三步曲(中)
2006/10/09 PHP
解析PHP可变函数的经典用法
2013/06/20 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
js异或加解密效果代码
2008/06/25 Javascript
JS获取父节点方法
2009/08/20 Javascript
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
2015/03/03 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
2016/06/13 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
2016/06/25 Javascript
js判断文件格式及大小的简单实例(必看)
2016/10/11 Javascript
微信小程序 教程之注册页面
2016/10/17 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
echarts多条折线图动态分层的实现方法
2019/05/24 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
vue + node如何通过一个Txt文件批量生成MP3并压缩成Zip
2020/06/02 Javascript
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
Python的Flask框架中web表单的教程
2015/04/20 Python
Python中的urllib模块使用详解
2015/07/07 Python
使用Kivy将python程序打包为apk文件
2017/07/29 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
基于django2.2连oracle11g解决版本冲突的问题
2020/07/02 Python
荷兰在线体育用品商店:Avantisport.nl
2018/07/04 全球购物
腾讯技术类校园招聘笔试试题
2014/05/06 面试题
图书室管理制度
2014/01/19 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
使用refresh_token实现无感刷新页面
2022/04/26 Javascript