使用jQuery内置的clone函数可以克隆DOM元素,而且clone函数支持链式调用
下例是clone的一个简单用法,它做了一个ul
的副本,并添加到body
中。
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- </head>
- <body>
- <ul>
- <li>list</li>
- <li>list</li>
- <li>list</li>
- <li>list</li>
- </ul>
- <script type="text/javascript" src="jquery-1.11.1.js"></script>
- <script type="text/javascript">
- <strong>$('ul').clone().appendTo('body');</strong>
- </script>
- </body>
- </html>
利用clone函数我们可以完成一些更加复杂的操作
比如,克隆一个元素,然后删除被克隆的原始元素
仍然以ul
为例,按照以下流程对其进行操作
- 获取ul(id='a')的所有li元素
- 为li元素添加click事件
- 克隆所有的li元素
- 把克隆的li元素添加到另一个ul(id='b')元素中
- 删除原始的ul(id='a')元素
代码示例如下
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- </head>
- <body>
- <ul id="a">
- <li>list</li>
- <li>list</li>
- <li>list</li>
- <li>list</li>
- </ul>
- <ul id="b"></ul>
- <script type="text/javascript" src="jquery-1.11.1.js"></script>
- <script type="text/javascript">
- $('ul#a li')
- .click(function() {
- alert('List Item Clicked')
- })
- .parent()
- .clone(true)
- .find('li')
- .appendTo('#b')
- .end()
- .end()
- .end()
- .remove();
- </script>
- </body>
- </html>xxx
在执行完appendTo('#b')
之后,连续调用了三次end()
回溯到原始的ul
元素,然后进行删除
- 第一个
end()
撤销了appendTo('#b')的操作 - 第二个
end()
撤销了find('li')的操作 - 第三个
end()
撤销了clone(true)的操作 - 三个
end()
执行完之后,回到了parent()
的结果集,也就是remove()
的作用对象