zoukankan      html  css  js  c++  java
  • 深度理解DOM拷贝clone()

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

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

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

    例如:

    HTML部分
    <div></div>
    
    JavaScript部分
    $("div").on('click', function() {//执行操作})
    
    //clone处理一
    $("div").clone()   //只克隆了结构,事件丢失
    
    //clone处理二
    $("div").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 div,
        .right div {
            width: 100px;
            height: 90px;
            padding: 5px;
            margin: 5px;
            float: left;
            border: 1px solid #ccc;
            background: #bbffaa;
        }
        </style>
    </head>
    
    <body>
        <h2>通过clone克隆元素</h2>
        <div class="left">
            <div class="aaron1">点击,clone浅拷贝</div>
            <div class="aaron2">点击,clone深拷贝,可以继续触发创建</div>
        </div>
        <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>
  • 相关阅读:
    高级(线性)素数筛
    Dijkstra(迪杰斯特拉)算法
    简单素数筛
    【解题报告】 POJ1958 奇怪的汉诺塔(Strange Tower of Hanoi)
    4 jQuery Chatting Plugins | jQuery UI Chatbox Plugin Examples Like Facebook, Gmail
    Web User Control Collection data is not storing
    How to turn on IE9 Compatibility View programmatically in Javascript
    从Javascrip 脚本中执行.exe 文件
    HtmlEditorExtender Ajax
    GRIDVIEW模板中查找控件的方式JAVASCRIPT
  • 原文地址:https://www.cnblogs.com/zhoulifeng/p/7509550.html
Copyright © 2011-2022 走看看