首頁 web前端 js教程 如何理解DOM拷貝clone()

如何理解DOM拷貝clone()

Sep 30, 2017 am 09:23 AM
clone 拷貝 理解

克隆節點是DOM的常見操作,jQuery提供一個clone方法,專門用來處理dom的複製:


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

clone方法比較簡單就是複製節點,但是要注意,如果節點有事件或資料之類的其他處理,我們需要透過clone(ture)傳遞一個布林值ture用來指定,這樣不只複製單純的節點結構,還要把附帶的事件與資料給一併克隆了

例如:


HTML部分<p></p>JavaScript部分
$("p").on(&#39;click&#39;, 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(&#39;click&#39;, function() {
            $(".left").append( $(this).clone().css(&#39;color&#39;,&#39;red&#39;) )
        })    </script>

    <script type="text/javascript">
        //克隆节点
        //克隆事件        $(".aaron2").on(&#39;click&#39;, function() {
            console.log(1)
            $(".left").append( $(this).clone(true).css(&#39;color&#39;,&#39;blue&#39;) )
        })    </script></body></html>
登入後複製

以上是如何理解DOM拷貝clone()的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

六張圖講清楚Linux零拷貝技術 六張圖講清楚Linux零拷貝技術 Feb 22, 2024 pm 06:40 PM

大家好,今天讓我們來聊聊Linux零拷貝技術。我們將以sendfile系統呼叫作為切入點,深入探討零拷貝技術的基本原理。零拷貝技術的核心思想是盡量減少資料在記憶體之間的複製,透過優化資料傳輸路徑,提高資料傳輸的效率和效能。 1.零拷貝技術簡介Linux零拷貝技術是一種用於最佳化資料傳輸的技術,透過減少資料在內核態和使用者態之間的複製次數,進而提高資料傳輸的效率。在資料傳輸的過程中,通常需要將資料從核心緩衝區複製到應用程式的緩衝區,再從應用程式緩衝區複製到網路裝置的緩衝區,最終才能完成傳送。零拷貝技術的優

淺析 Linux 中的零拷貝技術 淺析 Linux 中的零拷貝技術 Aug 04, 2023 pm 04:23 PM

本文探討Linux中 主要的幾種零拷貝技術 以及零拷貝技術 適用的場景 。為了迅速建立起零拷貝的概念,我們拿一個常用的場景來引入

深入理解Linux管道的使用方法 深入理解Linux管道的使用方法 Feb 21, 2024 am 09:57 AM

深入理解Linux管道的使用方法在Linux作業系統中,管道是一種非常有用的功能,能夠將一個命令的輸出作為另一個命令的輸入,從而方便地實現各種複雜的資料處理和操作。深入理解Linux管道的使用方法對於系統管理員和開發人員來說非常重要。本文將介紹管道的基本概念,並透過具體的程式碼範例來展示如何使用Linux管道進行資料處理和操作。 1.管道的基本概念在Linux

react 怎麼實現拷貝功能 react 怎麼實現拷貝功能 Dec 30, 2022 am 11:27 AM

react實現拷貝功能的方法:1、透過「copy-to-clipboard」函式庫實現複製功能;2、使用「react-copy-to-clipboard」函式庫實現複製功能;3、透過「navigator.clipboard.writeText(e )」方法實作複製;4、透過「document.execcommand(“copy」)」方法實作複製;5、透過「copy-js」函式庫實現拷貝功能。

如何正確理解PHP中的值傳遞方式 如何正確理解PHP中的值傳遞方式 Mar 08, 2024 pm 03:30 PM

如何正確理解PHP中的值傳遞方式PHP是廣泛應用於Web開發的腳本語言,而在PHP中的參數傳遞方式主要有值傳遞和引用傳遞兩種。而理解PHP中的值傳遞方式對於編寫高效的程式碼至關重要。本文將詳細討論PHP中的值傳遞方式,並透過具體的程式碼範例來幫助讀者更好地理解。值傳遞方式的基本概念值傳遞是指將變數的值複製一份傳遞給函數或方法,在函數內部對該值的操作不會影響到

理解Go語言註解的重要性 理解Go語言註解的重要性 Mar 29, 2024 pm 04:48 PM

在Go程式設計中,註解是一個非常重要的部分。註釋可以幫助程式設計師更好地理解程式碼的邏輯、目的和細節,從而提高程式碼的可讀性和可維護性。本文將介紹Go語言中註解的重要性,並結合具體的程式碼範例來說明註解對程式碼理解的幫助。首先,讓我們來看一個簡單的Go程式範例:packagemainimport"fmt"funcmain(){/

深入理解Go語言文件中的strings.Split函數 深入理解Go語言文件中的strings.Split函數 Nov 04, 2023 pm 01:14 PM

深入理解Go語言文件中的strings.Split函數,需要具體程式碼範例在Go語言中,字串操作是非常常見的需求。其中,strings套件是Go語言提供的一個標準包,提供了豐富的字串處理函數。其中,strings.Split函數是其中一個常用的函數,它的作用是根據指定的分隔符號將一個字串拆分成一個字串切片。在正式深入探討strings.Split函數之前,

理解ThinkPHP6的中間件 理解ThinkPHP6的中間件 Jun 20, 2023 am 10:03 AM

隨著現代Web應用程式的複雜性不斷增加,程式碼邏輯也變得越來越複雜。為了解決這個問題,中間件在現代Web開發中變得越來越流行。 ThinkPHP6是一個流行的PHP框架,它也支援中間件。在這篇文章中,我們將討論ThinkPHP6中間件的基礎知識和實際使用。什麼是中間件?在Web開發中,中間件是指對HTTP請求和回應進行處理的一種方式。當客戶端發送請求至伺服器時,

See all articles