Bilakah nod klon digunakan?
Kami tahu bahawa jika nod digunakan secara langsung semasa operasi DOM, nod akan berubah dengan operasi. Contohnya, selepas menggunakan .after/.before/.append dan kaedah lain pada nod, nod ditambah ke lokasi baharu dan nod di lokasi asal dialih keluar. Kadangkala nod perlu dikekalkan di lokasi asalnya dan hanya perlu menambah salinan ke lokasi yang sepadan Dalam kes ini, pengklonan mempunyai kes penggunaan.
jQuery.fn.clone mengklonkan salinan set elemen padanan semasa dan mengembalikannya sebagai objek jQuery.
Anda juga boleh menentukan sama ada hendak menyalin data tambahan (fungsi data()) dan peristiwa terikat unsur padanan ini (walaupun anak mereka).
jQueyr.fn.clone: fungsi(denganDataAndEvents, deepDataAndEvents) perihalan parameter
a. Langkah pelaksanaan asas fungsi klon dipecahkan seperti berikut (jQuery.clone)
Langkah pertama ialah mengklonkan nod DOM. Gunakan cloneNode(true) secara langsung untuk nod DOM yang menyokong pengklonan nod yang betul (iaitu, menyokong elem.cloneNode dan memastikan pengklonan yang betul), jika tidak, bina nod untuk menyimpan data yang diklon dan kemudian dapatkan nod tersebut.
1 2 3 4 5 6 7 8 9 |
|
Dalam langkah kedua, jika anda menggunakan pelayar IE, anda perlu membetulkan isu pengklonan IE satu demi satu melalui fixCloneNodeIssues( nod, destElements[i] );. Semua penyelesaian pengklonan IE disertakan dalam fixCloneNodeIssues, yang akan dianalisis secara terperinci dalam bahagian seterusnya. Klik di sini untuk melihat lebih banyak kandungan jQuery.support
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Langkah ketiga, jika anda ingin mengklon data cache (termasuk data biasa dan peristiwa mengikat), klonkannya.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Nota: Fungsi cloneCopyEvent akan menyimpan data nod asal ke nod klon, dan kemudian mengikat peristiwa nod asal kepada nod klon baharu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
Langkah keempat ialah untuk melindungi sejarah pengiraan skrip (menandai secara global segmen kod skrip sebagai telah dilaksanakan), menuntut semula memori dan kembali ke nod klon.
1 2 3 4 5 6 |
|
b. Ringkasan isu pengklonan IE fixCloneNodeIssues(src,dest)
src ialah nod asal, dan dest ialah nod klon src.
Senaraikan masalah pengklonan IE (IE8)
1.IE6-8 akan mengklon acara apabila menggunakan cloneNode (acara ini terikat melalui attachEvent). Untuk memastikan keseragaman, adalah perlu untuk mengosongkan acara klon dan bersedia untuk acara pengklonan bersatu berikutnya
1 2 3 4 5 6 7 8 9 |
|
2.IE8-Apabila mengklon skrip tag skrip, kandungan yang diklon akan kosong. Kami perlu menetapkannya semula dan memastikan ia tidak melaksanakan kandungan skrip.
1 2 3 4 5 |
|
3.IE6-10 tidak boleh mengklon nod anak bagi elemen objek yang diperoleh menggunakan classid. Di bawah IE10, jika nod induk adalah batal, pengecualian NoModificationAllowedError akan dibuang. Ia adalah perlu untuk menetapkan semula outerHTML dan innerHTML nod asal.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
4.IE6-8 tidak boleh mengklon keadaan pilihan kotak semak atau butang radio. Memerlukan tetapan aktif.
1 2 3 4 5 6 7 |
|
5. Apabila mengklon teg pilih, IE6-8 tidak boleh kembali dengan betul kepada keadaan pilihan lalai pilih. Memerlukan tetapan aktif.
1 2 3 4 |
|
6. Apabila mengklonkan jenis input dan teg teks yang lain, IE6-8 tidak boleh menetapkan nilai lalai dengan betul kepada nilai yang betul. Memerlukan tetapan aktif.
1 2 3 4 |
|
Fungsi disableScript digunakan di dalam. Tujuan fungsi adalah untuk menukar jenis skrip untuk memastikan ia tidak akan dilaksanakan sebagai skrip selepas memberikan nilai kepada skrip. Kita boleh belajar daripada pendekatan ini
1 2 3 4 5 6 |
|
Kandungan di atas ialah keseluruhan perihalan siri analisis kod sumber jQuery-1.9.1 (11) kesinambungan operasi DOM nod pengklonan yang diperkenalkan oleh editor saya harap anda menyukainya.