jQuery ialah salah satu rangka kerja bahagian hadapan yang paling banyak digunakan, dan sejumlah besar perpustakaan dan pemalam pihak ketiga dibangunkan berdasarkannya. Untuk mengelakkan pencemaran ruang nama global, jQuery menyediakan kaedah jQuery.noConflict() untuk menyelesaikan konflik berubah. Kaedah ini, tanpa ragu, sangat berkesan. Malangnya, dokumentasi rasmi jQuery tidak menerangkan kaedah ini dengan cukup jelas, dan ramai pembangun tidak tahu apa sebenarnya yang berlaku apabila mereka memanggil jQuery.noConflict(), mengakibatkan banyak masalah apabila menggunakannya. Walaupun begitu, prinsip pelaksanaan di sebalik jQuery.noConflict() masih bernilai dipelajari dan dikuasai oleh pembangun web, dan ia boleh menjadi alat yang berkuasa untuk menyelesaikan masalah seperti pencemaran ruang nama global.
Apakah peranan jQuery.noConflict()?
jQuery.noConflict() wujud untuk satu tujuan sahaja: ia membenarkan anda memuatkan berbilang contoh jQuery pada halaman yang sama, terutamanya versi jQuery yang berbeza. Anda mungkin tertanya-tanya, mengapa anda perlu memuatkan/menggunakan pelbagai versi objek jQuery yang berbeza pada satu halaman? Secara umumnya, terdapat dua situasi. Dalam kes pertama, kod perniagaan anda menggunakan versi terkini pustaka jQuery, dan pemalam pihak ketiga yang anda pilih bergantung pada versi pustaka jQuery yang lebih awal, dalam kes kedua, anda mengekalkan sistem yang sudah ada; perniagaan Atas pelbagai sebab, kod tersebut merujuk versi lama perpustakaan jQuery, dan modul anda yang baru dibangunkan menggunakan versi lain pustaka jQuery. Dalam kedua-dua kes, anda perlu menghadapi masalah konflik objek/kaedah jQuery. Nasib baik, jQuery.noConflict() membantu anda menyelesaikan masalah ini.
Apa yang berlaku apabila jQuery dimuatkan?
Apabila jQuery dirujuk/dimuatkan oleh halaman, ia dirangkumkan dalam fungsi laksana sendiri (fungsi tanpa nama Semua pembolehubah, fungsi dan objek yang disediakannya berada dalam persekitaran boleh laku di dalam fungsi tanpa nama dan tidak boleh dipanggil oleh luaran). alam sekitar. Mencegah pencemaran ruang nama global.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
jQuery mentakrifkan dua objek global: jQuery dan $ di dalam fungsi tanpa nama, mendedahkan dirinya kepada persekitaran luaran. Pelbagai kaedah awam yang digunakan oleh pembangun diakses melalui dua objek ini, seperti jQuery.ajax(), jQuery.css(), dsb. Pada mulanya, mereka menunjuk ke objek yang sama jQuery (pembolehubah peribadi) di dalam fungsi tanpa nama, di mana pembolehubah dan fungsi peribadi di dalam fungsi tanpa nama diakses. Ini membolehkan pembolehubah peribadi dalaman dan fungsi fungsi tanpa nama masih berada dalam memori selepas ia dilaksanakan dan tidak akan dikosongkan oleh mekanisme pengumpulan sampah JavaScript.
window.jQuery = window.$ = jQuery;
Apabila jQuery dimuatkan oleh halaman, halaman semasa mungkin sudah mempunyai dua pembolehubah global jQuery dan $ (sebagai contoh, perpustakaan pihak ketiga yang lain dimuatkan dan ia juga ditakrifkan secara dalaman), yang akan menyebabkan objek Sedia ada adalah ditimpa (pencemaran ruang nama global). Untuk menyelesaikan masalah ini, jQuery secara dalaman menyimpan pembolehubah global sedia ada dan menyimpannya dalam pembolehubah peribadi _jQuery dan _$ untuk panggilan seterusnya. Oleh itu, jika objek jQuery dan $ belum wujud apabila pustaka jQuery dimuatkan pada halaman, maka _jQuery dan _$ kedua-duanya tidak ditentukan jika tidak, mereka akan menyimpan rujukan kepada jQuery dan $ (mungkin dari pihak ketiga perpustakaan yang dirujuk sebelum ini) Atau versi perpustakaan jQuery yang berbeza). Selepas itu, jQuery akan menimpa dua pembolehubah global ini dan mendedahkan dirinya kepada persekitaran luaran seperti yang diterangkan di atas. Pada ketika ini, pembolehubah global jQuery dan $ pada halaman telah menunjuk kepada perpustakaan jQuery yang baru diperkenalkan.
// Map over jQuery in case of overwrite _jQuery = window.jQuery, // Map over the $ in case of overwrite _$ = window.$, // Otherwise expose jQuery to the global object as usual window.jQuery = window.$ = jQuery;
Kesan ajaib jQuery.noConflict()?
Andaikan sistem yang anda uruskan sudah merujuk perpustakaan jQuery versi 1.7.0, dan anda merujuk perpustakaan jQuery versi 1.10.2 dalam fungsi yang baru ditambah. Jadi, adakah cara untuk menggunakan semula jQuery 1.7.0 atau menggunakan kedua-dua versi perpustakaan jQuery pada masa yang sama? Jawapannya ya, iaitu jQuery.noConflict(). Malah, menggunakan jQuery.noConflict(), anda boleh segera mengubah hala pembolehubah global jQuery dan $ ke objek yang dirujuk sebelum ini. Menakjubkan, bukan? Inilah sebabnya mengapa jQuery secara dalaman menyimpan objek yang dirujuk sebelum ini sebelum mendedahkan dirinya kepada dunia luar.
− jQuery.noConflict() menerima parameter Boolean pilihan, biasanya nilai lalai adalah palsu. Apakah kesan yang akan diberikan oleh parameter ini? Sebenarnya, ia sangat mudah. Jika jQuery.noConflict() atau jQuery.noConflict(false) dipanggil, hanya pembolehubah global $ akan ditetapkan semula kepada nilai rujukan sebelumnya jika jQuery.noConflict() atau jQuery.noConflict(true) dipanggil, maka pembolehubah global; $ akan ditetapkan semula kepada nilai rujukan sebelumnya, kedua-dua jQuery dan $ akan ditetapkan semula kepada nilai rujukan sebelumnya. Ini sangat penting dan disyorkan untuk diingati. Apabila anda memanggil jQuery.noConflict(false/true), ia akan mengembalikan contoh jQuery semasa Menggunakan ciri ini, kami boleh menamakan semula jQuery.
// "Renaming" jQuery var jayquery = jQuery.noConflict( true ); // Now we can call things like jayquery.ajax(), jayquery.css(), and so on
Mari kita lihat coretan kod lain untuk menguji sama ada kita benar-benar memahami noConflict() yang ajaib
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>Alat AI Hot
Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik
AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.
Undress AI Tool
Gambar buka pakaian secara percuma
Clothoff.io
Penyingkiran pakaian AI
AI Hentai Generator
Menjana ai hentai secara percuma.
Artikel Panas
R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌R.E.P.O. Tetapan grafik terbaik1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌Assassin's Creed Shadows: Penyelesaian Riddle Seashell3 minggu yang laluByDDDApa yang Baru di Windows 11 KB5054979 & Cara Memperbaiki Masalah Kemas Kini2 minggu yang laluByDDDAkan R.E.P.O. Ada Crossplay?1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌Alat panas
Dreamweaver CS6
Alat pembangunan web visual
Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular
Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa
SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini