標籤:jquery clone
使用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()的作用對象