探索jquery方法中empty,remove与detach的区别
2014-11-19 22:49
615 查看
最近一直疑惑此三种方法的具体区别在于何处,随即想弄明白其具体的区别,看了一些说明,也依照官方文档,终于把这三个方法弄明白了,果然功夫不负有心人,继续努力。
上正文,先简单介绍下这三种方法
[b].empty() [/b] 描述: 从DOM中移除集合中匹配元素的所有子节点。
这个方法不接受任何参数。
这个方法不仅移除子元素(和其他后代元素),同样移除元素里的文本。因为,根据说明,元素里任何文本字符串都被看做是该元素的子节点。请看下面的HTML:
我们可以移除里面的任何元素
结果文本
如果
为了避免内存泄漏,jQuery先移除子元素的数据和事件处理函数,然后移除子元素。
如果你想删除元素,不破坏他们的数据或事件处理程序(这些绑定的信息还可以在之后被重新添加回来),请使用
[b].detach() [/b] 描述: 从DOM中去掉所有匹配的元素。
可以移除任何想要移除的元素:
结果如下:
如果
我们也可以添加一个可选的选择器参数来过滤匹配的元素。例如,前面的代码可以重写为:
结果将一样:
上面是一些基本概念,让大家久等了,经过本人的测试得出如下结论。empty()方法无参数,而且清空后的子集及文本无法进行还原。而detach()和remove()方法可以将其保存在一个变量中
如声明变量p 写成如下形式
当需要从新添加时可以直接添加如下
这是detach()和remove()方法都有的功能。remove()较detach()不同的是remove()可以删除指定的类如remove(‘a’),而detach()不可这样操作,还要注意一点,当用remove()方法移除元素后,再进行添加,再子集的事件的不会存在,而detach()子集的事件还可执行。
如果不明白的或者不清楚的可以随时评论,大家一同学习与进步。
上正文,先简单介绍下这三种方法
[b].empty() [/b] 描述: 从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()代替 。
[b].detach() [/b] 描述: 从DOM中去掉所有匹配的元素。
.detach()方法和
.remove()一样, 除了
.detach()保存所有jQuery数据和被移走的元素相关联。当需要移走一个元素,不久又将该元素插入DOM时,这种方法很有用。
例子:
<!DOCTYPE html> <html> <head> <style>p { background:yellow; margin:6px 0; } 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>
[b].remove[/b] 描述: 将匹配元素集合从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 0; }</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源码分析之remove和detach方法的区别
- jQuery解读之empty、remove、detach区别
- jQuery删除元素方法remove(),detach(),empty()
- jquery的detach remove empty的区别
- jQuery删除节点的三个方法即remove()detach()和empty()
- jquery中remove(),detach()和empty()的区别
- 小议jquery的remove()和detach()的方法区别
- jQuery解读之empty、remove、detach区别
- jQuery删除元素方法remove(),detach(),empty()
- 方法remove,detach,empty的区别
- jQuery中remove()、empty()、detach()的区别
- jQuery的删除的三种方法remove(),detach(),empty()
- jQuery删除节点的三个方法即remove()detach()和empty()
- jQuery方法区别(七)detach() remove()区别
- 浅谈jQuery中的删除方法empty()、remove()和detach()
- jquery中empty、remove、detach的区别
- jQuery 元素移除empty() remove()与detach()的区别?
- jquery的empty()方法与jquery的remove()的区别及作用
- remove()、detach()和empty()---jquery的三种删除节点的方法
- jQuery中删除节点方法remove()、detach()、empty()分析