使用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()
的作用对象