DOM操作复制元素
jQuery定义了clone()方法用来复制节点,与之对应DOM定义了cloneNode()方法实现相同的操作功能。
jQuery实现
jQuery的clone方法能够复制匹配的DOM元素并且选中这些复制的副本。在下面的示例中,当单击段落文本时,页面将复制div元素及其包含的所有属性和子节点,然后将它们添加到div元素的后面,如下:
<div class=”red”title=”no” ondbclick=”alert(‘ok’)”>
<p>段落文本</p>
</div>
$(function(){
$(“div”).click(function(){
var $div = $(“div”).clone(); //复制匹配的div元素
$div.insertAfter(“div”); //把复制 的元素添加到当前div元素后面。
})
})
但是复制的div元素不拥有鼠标单击事件,而拥有div元素自身携带的鼠标双击事件。如果为clone()方法传递true参数,则可以使复制元素也拥有单击事件,也就是说当单击复制div元素时,它会继续进行复制操作,连续单击会使复制的div元素成倍增加。
javascript实现
DOM预定义了cloneNod()方法,可以创建指定节点的副本。该方法包含一个参数,取值包括true和fasle,用来设置被复制的节点是否包括源节点的属性和子节点。例如:
var div = document.getElementsByTagName(“div”)[0];//选择div元素
div.onclick = function(){
var div1 = div.cloneNode(true);
div.parentNode.insertBefore(div1,div.nextSibling);
}