节点克隆
对于克隆节点最长用的方法有两种,一、原生JavaScript。 二、使用流行类库。这篇文章里我会说下使用原生Javascript方法和jQuery方法克隆节点。以及,两者的异同点。好了,废话也不多说了,进入主题。。
在说两种实现克隆节点之前,再啰嗦几句基础的概念:影子克隆和深度克隆
- 1
- 2
- 3
- 4
- 5
- 6
- 7
原生JavaScript方法 : cloneNode()
原生JavaScript给我们提供了一个cloneNode方法来实现克隆节点,该方法被目前所有主流浏览器所支持。使用方式如下:
- 1
- 2
- 3
- 4
- 5
需要注意的是,使用原生克隆方法之克隆属性和内联事件,对于通过事件监听器添加的事件并不会克隆。请看下面代码示例:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
使用jQuery.clone
虽然,原生的cloneNode方法可以复制节点上的属性,但是却无法复制绑定在节点上的事件。
但是,jQuery库提供的$.clone()
正好帮我们解决了原生方法克隆节点的缺点。这也正是使用$.clone()
的优势。即$.clone()
即可像原生方法那样克隆节点的属性,也可以克隆绑定在节点上的事件。这也就是说那些通过
.bin、
.on、$.click等函数绑定的事件,也能够复制到新的节点之上。
注意: $.clone()方法总是会进行深度克隆,所以,请谨慎使用这个方法。
使用方法:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
$.clone()方法不能复制那些不是通过jQuery绑定到元素上的事件,除非是内敛事件处理函数。(如:
<div onClick="comeFunction();">
)
jQuery.clone()
函数还能复制通过$.data绑定到元素上的数据。