视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
如何理解DOM拷贝clone()
2020-11-27 20:12:24 责编:小采
文档


克隆节点是DOM的常见操作,jQuery提供一个clone方法,专门用于处理dom的克隆:

.clone()方法深度 复制所有匹配的元素集合,包括所有匹配元素、匹配元素的下级元素、文字节点。

clone方法比较简单就是克隆节点,但是需要注意,如果节点有事件或者数据之类的其他处理,我们需要通过clone(ture)传递一个布尔值ture用来指定,这样不仅仅只是克隆单纯的节点结构,还要把附带的事件与数据给一并克隆了

例如:

HTML部分<p></p>JavaScript部分
$("p").on('click', function() {//执行操作})

//clone处理一
$("p").clone() //只克隆了结构,事件丢失

//clone处理二
$("p").clone(true) //结构、事件与数据都克隆

使用上就是这样简单,使用克隆的我们需要额外知道的细节:

  • clone()方法时,在将它插入到文档之前,我们可以修改克隆后的元素或者元素内容,如右边代码我 $(this).clone().css('color','red') 增加了一个颜色

  • 通过传递true,将所有绑定在原始元素上的事件处理函数复制到克隆元素上

  • clone()方法是jQuery扩展的,只能处理通过jQuery绑定的事件与数据

  • 元素数据(data)内对象和数组不会被复制,将继续被克隆元素和原始元素共享。深复制的所有数据,需要手动复制每一个

  • 案例分析:

    <!DOCTYPE html><html><head>
     <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
     <title></title>
     <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
     <style>
     .left,
     .right {
     width: 300px;
     height: 120px;
     }
     
     .left p,
     .right p {
     width: 100px;
     height: 90px;
     padding: 5px;
     margin: 5px;
     float: left;
     border: 1px solid #ccc;
     background: #bbffaa;
     }
     </style></head><body>
     <h2>通过clone克隆元素</h2>
     <p class="left">
     <p class="aaron1">点击,clone浅拷贝</p>
     <p class="aaron2">点击,clone深拷贝,可以继续触发创建</p>
     </p>
     <script type="text/javascript">
     //只克隆节点
     //不克隆事件 $(".aaron1").on('click', function() {
     $(".left").append( $(this).clone().css('color','red') )
     }) </script>
    
     <script type="text/javascript">
     //克隆节点
     //克隆事件 $(".aaron2").on('click', function() {
     console.log(1)
     $(".left").append( $(this).clone(true).css('color','blue') )
     }) </script></body></html>

    下载本文
    显示全文
    专题