jquery中remove()与detach()的区别

转载 2016年05月30日 15:08:35

jQuery是一个很大强的东西,在工作中常能用到,可是有些方法还是因为不常用到,或是没有注意到而被我们而忽略。

  remove()和detach()可能就是其中的一个,可能remove()我们用得比较多,而detach()就可能会很少了。可能我用的不够精吧,我是一次也没有用过。可是这次因为一个项目中一个问题,而用到它,感觉很有意思就记录下来,与大家分享。

  remove():官方的解释是

  从DOM中删除所有匹配的元素。这个方法不会把匹配的元素从jQuery对象中删除,因而可以在将来再使用这些匹配的元素。但除了这个元素本身得以保留之外,其他的比如绑定的事件,附加的数据等都会被移除。

  我的理解就是将元素移除了。但是怎么再找回来,说真的,我一直也没有找到,哪个朋友用过。可以告诉我,十分感谢,

  用法:

  从DOM中把所有段落删除

  HTML 代码:
  <p>Hello</p> how are <p>you?</p>
  jQuery 代码:
  $("p").remove();
  结果:
  how are

  这个方法,不多说了,我们主要说一下detach()这个方法,

  官方描述:

  从DOM中删除所有匹配的元素。这个方法不会把匹配的元素从jQuery对象中删除,因而可以在将来再使用这些匹配的元素。与remove()不同的是,所有绑定的事件、附加的数据等都会保留下来。  

  描述:

  从DOM中把所有段落删除

  HTML 代码:
 <p>Hello</p> how are <p>you?</p>
  jQuery 代码:
  $("p").detach();
  结果:
  how are

  描述:

  从DOM中把带有hello类的段落删除

  HTML 代码:
  <p class="hello">Hello</p> how are <p>you?</p>
   jQuery 代码:
  $("p").detach(".hello");
  结果:
  how are <p>you?</p>

我们这么一看,好像没有什么区别啊。这二个功能,哈哈。。。。我现在说一下我遇到的情况。然后是如何解决的,大家就明白了。

我这里有一个表单,其中有一项是 注册码,就是每个信息都会有一个独立的注册码,没有注册码是不能注册成功的。我用的是jquery的控件formValidator来进行验证的,这个控件大家都用过,他是在页面加载的时候,就开始验证了,而且对于css中的display和jquery里的hide()方法,它是无视的。本来呢。这是没有问题,可是用户却提出了一个新的需求,就是加一个选项,用来判断是否显示这个注册码,如果不显示,那么就不要对注册码文本框进行验证,无耻的需求。

在试用了css的display和jquery的hide()之后,我把目光放到了remove()中。它到是不验证了,可是我选择要验证的时候,被移除的内容加不回来了,所以我开始找能回来了的。这时候,发现了detach()。它的有什么好处呢。我下面放一代码出来

[javascript] view plain copy
  1. var p;  
  2.         function selectChange() {  
  3.               
  4.   
  5.             if (document.getElementById("ddl_schoolarea").value != "请选择") {  
  6.   
  7.                 p = $("#trlession").detach();  
  8.             }  
  9.             else {  
  10.                 //table1为一个table名字  
  11.                 $("#table1").append(p);  
  12.                   
  13.             }  
  14.         }  

看到这段代码之后,我想不用我过多的解释了。大家就明白了吧,很有意思的方法。

jQuery解读之empty、remove、detach区别

通过一张表来
  • qinshenxue
  • qinshenxue
  • 2014年04月16日 11:30
  • 11941

Jquery empty() remove() detach() 方法的区别

引言: 最近项目中用到了这几个方法,感觉很大程度上有些相似,查了Jquery的api,同时也找了很多博客文章,发现还是理解不到区别。最后在很多材料和自己的事例验证中,终于找到了区别,不敢独占特拿出来...
  • walkerJong
  • walkerJong
  • 2012年09月18日 15:44
  • 12741

FragmentTransaction add() ,hide(), detach(), show()

使用add()加入fragment时将触发onAttach(),使用attach()不会触发onAttach() 使用replace()替换后会将之前的fragment的view从viewtre...
  • hb8676086
  • hb8676086
  • 2016年06月01日 01:19
  • 1150

Android Fragment 真正的完全解析(上) add remove replace detach attach hide show

自从Fragment出现,曾经有段时间,感觉大家谈什么都能跟Fragment谈上关系,做什么都要问下Fragment能实现不~~~哈哈,是不是有点过~~~ 本篇博客力求为大家说明Fragment如何...
  • Buaaroid
  • Buaaroid
  • 2015年09月07日 14:24
  • 6693

浅谈jQuery中的删除方法empty()、remove()和detach()

jQuery提供了三种删除节点的方法:remove()、detach()和empty()。 1.empty():不是删除节点,而是清空节点,清空匹配的元素集合中所有的子节点,但元素自身和事件都未被删除...
  • zhouziyu2011
  • zhouziyu2011
  • 2017年04月25日 12:58
  • 816

jquery remove()与detach()区别

remove()与detach()方法都是从dom中删除所有的元素 两者的共同之处在于都不会把匹配的元素从jquery对象中删除。 不同之处在于用remove()删除的元素,除了元素被保留,其他的...
  • qq_33880421
  • qq_33880421
  • 2016年11月19日 11:22
  • 77

jquery中remove()与detach()的区别

jquery是一个很大强的东西,在工作中常能用到,可是有些方法还是因为不常用到,或是没有注意到而被我们而忽略。   remove()和detach()可能就是其中的一个,可能remove()我们用得...
  • chenpeng19910926
  • chenpeng19910926
  • 2016年01月27日 17:41
  • 215

jquery中empty、remove、detach的区别

 一、jquery中empty() 1、只移除了 指定元素中的所有子节点,被选元素自己是不会被删除的。 2、例如 dsfsd $("p").empty() 结果...
  • whaxrl
  • whaxrl
  • 2015年08月21日 09:31
  • 232

jQuery中remove()、empty()、detach()的区别

remove(),清除匹配的元素包括所有子节点,但不会把元素从jQuery对象中删除,将来还能够利用这些元素,但是把绑定到该元素上的事件,数据等全部删除,以后不能再利用 detach(),与remov...
  • cui1002
  • cui1002
  • 2017年03月20日 18:52
  • 87

remove()与detach()区别

remove()与detach()区别 $(function(){ $('div').click(function(){ alert('tony'); }) // var oDiv=...
  • qq_37467814
  • qq_37467814
  • 2017年02月14日 22:34
  • 66
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jquery中remove()与detach()的区别
举报原因:
原因补充:

(最多只允许输入30个字)