关闭

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

108人阅读 评论(0) 收藏 举报
分类:

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.         }  

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:334240次
    • 积分:3717
    • 等级:
    • 排名:第9026名
    • 原创:49篇
    • 转载:527篇
    • 译文:0篇
    • 评论:19条
    最新评论