jQuery中删除节点方法remove()、detach()、empty()分析

  jQuery中提供了三种删除节点的方法:remove()、detach()、empty(),本文详细分析这三种方法。

  最容易区分的是empty(),该方法严格上属于“清空节点”,即删除其子节点,自身并不会删除。举个栗子:

 1 <!doctype html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>remove和detach对比</title>
 6     <script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
 7     <script type="text/javascript">
 8     $(function(){
 9         $(".apple").click(function(){alert(‘我是苹果‘);});
10         var $apple = $(".apple");
11
12         //empty()
13          $(".delete").click(function(){
14              $apple.empty();
15          });
16          $(".add").click(function(){
17              $apple.text("苹果");
18          });
19
20
21     });
22
23     </script>
24 </head>
25 <body>
26     <div>
27         <ul>
28             <li>香蕉</li>
29             <li>草莓</li>
30             <li>橘子</li>
31             <li style="color:red;" class="apple">苹果</li>
32         </ul>
33         <button class="delete">点击删除</button>
34         <button class="add">点击添加</button>
35     </div>
36 </body>
37 </html>

  删除前:

  删除后:

  empty()方法很容易理解。下面重点分析一下remove()和detach()方法:

  remove():删除所有后代节点及自身,与该节点绑定的事件删除后也将解除绑定。同样使用上面的栗子,js代码如下:

1         //remove--节点删除后,绑定的事件也会解除。
2         $(".delete").click(function(){
3             $apple.remove();
4         });
5         $(".add").click(function(){
6             $apple.appendTo("ul");
7         });

  删除前,点击“苹果”,会跳出提示信息:

  删除后:

  

  点击添加后,能够得到删除前一样的效果,但是点击“苹果”时不会出现提示框,说明原来绑定的click()事件解除了。

  

  detach():删除所有后代节点及自身,但与该节点绑定的事件删除后依然保留。js代码:

1         //detach--节点删除后,绑定的事件依然存在,可继续使用。
2         $(".delete").click(function(){
3             $apple.detach();
4         });
5
6         $(".add").click(function(){
7             $apple.appendTo("ul");
8         });

  删除后再次添加节点,点击“苹果”会保留删除前的绑定信息,即弹出提示信息。

  全文完,欢迎各位朋友批评指正!

时间: 2024-08-07 21:04:23

jQuery中删除节点方法remove()、detach()、empty()分析的相关文章

Jquery中删除元素方法

今天有幸被召回母校给即将毕业的学弟学妹们讲我这两年的工作史,看了下母校没啥特别的变化,就是寝室都安了空调,学妹们都非常漂亮而已..好了不扯蛋了,说下今天的主题吧.这些天我在深度定制语法高亮功能的同时发现了博客园提供的一些有意思的函数,甚至有几个博客园都没用到,我也不知道怎么才能触发那些功能..打开这个js就可以看到很多好用的东西了,虽然写的不怎么样,但是至少有这些功能. ps: 推荐安装一个代码格式化的插件,否则一坨看着蛋疼.比如第一个就是 log,方便调试. http://www.qingre

mongodb replica set 添加/删除节点方法--http://www.ii123.com/jc/bc/bczh/258948.html

replica set多服务器主从,添加,删除节点,肯定会经常遇到的.下面详细说明一下,添加,删除节点的2种方法. 一,利用rs.reconfig,来添加,删除节点 1,添加节点  代码如下   repmore:PRIMARY> config = {_id:"repmore",members:[{_id:0,host:'127.0.0.1:27017',priority :2},{_id:1,host:'127.0.0.1:27018',priority:1}]};   //添加

jQuery 中的 unbind() 方法

jQuery 中的 unbind() 方法是 bind() 方法的反向操作,从每一个匹配的元素中删除绑定的事件. 语法结构: [javascript] view plain copy unbind([type][, data]); type是事件类型,data为将要移除的事件.具体说明如下: 1.如果没有参数,则删除所有的绑定事件: 2.如果提供了事件类型(type)作为参数,则只删除该类型的绑定事件: 3.如果把在绑定时传递的处理函数作为第2个参数,则只有这个特定的事件处理函数被删除.

解决关于jquery中$.get()方法总是报“HierarchyRequestError: Node cannot be inserted at the specified point in the hierarchy”错的方法

解决关于jquery中$.get()方法总是报“HierarchyRequestError: Node cannot be inserted at the specified point in the hierarchy”错的方法 今天在看<jquery基础教程(第三版)>第十章的时候,运行随书下载的源码时总是不成功.起初以为书中自带的JS文件有错呢,但是测来测去也没发现哪里有问题.现在把源码附下: 1.这是书中带的HTML文件,其余的忽略不计,关键的就是下面这个a. <a id=&qu

jQuery 中$(this).parent().parent().remove()无效。

在写文章系统的删除功能.需要删除一行数据.在删除的页面,需要jQuery 删除一hang. 局部刷新数据. $(".del").click(function(){ var id = $(this).attr("hid"); var t = $(this).parent().parent(); var i = confirm("是否确认删除"); if(i){ $.post("<?php echo $this->createU

字符串方法,js中的数组方法,ES5新增的数组方法,以及jQuery中的数组方法

说明:本片主要对比介绍与数组操作相关的方法 (一)字符串方法(String对象方法) indexOf() //检索字符串 lastIndexOf() //从后向前搜索字符串 match() //找到一个或多个正则表达式的匹配 replace() //替换与正则表达式匹配的子串 search() //检索与正则表达式相匹配的值 slice() //提取字符串的片断,并在新的字符串中返回被提取的部分 split() //把字符串分割为字符串数组 substr() //从起始索引号提取字符串中指定数目

jQuery中的$.grep()方法的使用

jQuery中的$.grep()方法的使用 转载▼ grep()方法用于数组元素过滤筛选 grep(array,callback,invert) array:待过滤数组; callback:处理数组中的每个元素,并过滤元素,该函数中包含两个参数,第一个是当前数组元素的值,一个是当前数组元素的下标,即元素索引值.此函数应返回一个布尔值.另外,此函数可设置为一个字符串,当设置为字符串时,将视为“lambda-form”(缩写形式?),其中 a 代表数组元素,i 代表元素索引值.如“a > 0”代表“

重新认识Jquery中的html()方法

今天测试给我提了一个bug:在页面上我需要借助"</td>"来获取表格中某行内的某列以后的单元格,也就是说里面有这样一行代码:"tr = tr.substring(tr.indexOf("</td>"));",这个JavaScript脚本在谷歌等浏览器中均可以达到预期效果,可是在IE8中就不行了,弄了一个多小时最后终于发现了问题,先看如下代码: <html> <head> <title>

jQuery中的join方法

和JS 中的JOIN 方法一样,将一数组按照JOIN的参数连接起来.比如: var arr = [ "a", "b", "c", "d", "e" ]; document.write(arr.join("-")); 结果:a-b-c-d-e. var members=["John","Steve","Ben","Dam