jQuery -> 克隆DOM元素

来源:互联网 发布:淘宝转运服务 编辑:程序博客网 时间:2024/06/13 03:34

使用jQuery内置的clone函数可以克隆DOM元素,而且clone函数支持链式调用


下例是clone的一个简单用法,它做了一个ul的副本,并添加到body中。


[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <!DOCTYPE html>  
  2. <html>  
  3.     <head>  
  4.         <meta charset="utf-8">  
  5.     </head>  
  6.     <body>  
  7.         <ul>  
  8.             <li>list</li>  
  9.             <li>list</li>  
  10.             <li>list</li>  
  11.             <li>list</li>  
  12.         </ul>  
  13.         <script type="text/javascript" src="jquery-1.11.1.js"></script>  
  14.         <script type="text/javascript">  
  15.             <strong>$('ul').clone().appendTo('body');</strong>  
  16.         </script>  
  17.     </body>  
  18. </html>  

利用clone函数我们可以完成一些更加复杂的操作

比如,克隆一个元素,然后删除被克隆的原始元素

仍然以ul为例,按照以下流程对其进行操作

  1. 获取ul(id='a')的所有li元素
  2. 为li元素添加click事件
  3. 克隆所有的li元素
  4. 把克隆的li元素添加到另一个ul(id='b')元素中
  5. 删除原始的ul(id='a')元素

代码示例如下

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <!DOCTYPE html>  
  2. <html>  
  3.     <head>  
  4.         <meta charset="utf-8">  
  5.     </head>  
  6.     <body>  
  7.         <ul id="a">  
  8.             <li>list</li>  
  9.             <li>list</li>  
  10.             <li>list</li>  
  11.             <li>list</li>  
  12.         </ul>  
  13.         <ul id="b"></ul>  
  14.         <script type="text/javascript" src="jquery-1.11.1.js"></script>  
  15.         <script type="text/javascript">  
  16.             $('ul#a li')  
  17.                 .click(function() {  
  18.                     alert('List Item Clicked')  
  19.                 })  
  20.                 .parent()  
  21.                 .clone(true)  
  22.                 .find('li')  
  23.                 .appendTo('#b')  
  24.                 .end()  
  25.                 .end()  
  26.                 .end()  
  27.                 .remove();  
  28.         </script>  
  29.     </body>  
  30. </html>xxx  

在执行完appendTo('#b')之后,连续调用了三次end()回溯到原始的ul元素,然后进行删除

  1. 第一个end()撤销了appendTo('#b')的操作
  2. 第二个end()撤销了find('li')的操作
  3. 第三个end()撤销了clone(true)的操作
  4. 三个end()执行完之后,回到了parent()的结果集,也就是remove()的作用对象
0 0