Penguraian prinsip pelaksanaan fungsi noconflict dalam jQuery_jquery

WBOY
Lepaskan: 2016-05-16 16:16:06
asal
1165 orang telah melayarinya

Dalam jQuery, noconflict ialah kaedah penting yang digunakan untuk mencegah konflik pembolehubah dan melepaskan kawalan pembolehubah. Kami tahu bahawa jQuery menyediakan dua pembolehubah global kepada dunia luar, $ dan jQuery Walaupun jQuery hanya menghasilkan dua pembolehubah global, konflik hanya akan berlaku dalam kes yang jarang berlaku, tetapi jika halaman web mengandungi lebih banyak perpustakaan kelas, akan berlaku konflik A automatik berlaku apabila mentakrifkan $ atau kewujudan pembolehubah global jQuery.

Fungsi noconflict yang disediakan oleh jQuery menyelesaikan masalah konflik pembolehubah dengan sangat baik, sama ada konflik $ atau jQuery, ia boleh diselesaikan Seterusnya, mari analisa pengendalian konflik jQuery.

Pertama, mari kita lihat pelaksanaan noconflict dalam kod sumber jQuery:

(function(window,undefined){
var 
// Map over jQuery in case of overwrite
_jQuery = window.jQuery,
// Map over the $ in case of overwrite
_$ = window.$,
jQuery.extend({
noConflict: function( deep ){
 if ( window.$ === jQuery ) {
 window.$ = _$;
 }
 if ( deep && window.jQuery === jQuery ) {
 window.jQuery = _jQuery;
 }
 return jQuery;
}
})
}(window)

Salin selepas log masuk


Di sini jQuery.extend ialah kaedah jQuery untuk memanjangkan sifat statik Ini boleh dilihat sebagai melampirkan kaedah noConflict secara langsung ke jQuery. Di dalam fungsi tanpa nama, tentukan pembolehubah dalaman _jQuery dan _$ masing-masing untuk menyimpan window.jQuery dan window.$ Tujuannya adalah untuk menggunakan pembolehubah dalaman untuk menyelamatkan keadaan kedua-dua pembolehubah global ini sebelum jQuery dijalankan, supaya mereka boleh. digunakan kemudian. Kedua-dua pembolehubah ini dipulihkan dalam operasi anti-perlanggaran. noConflict boleh mengendalikan konflik antara dua pembolehubah $ dan jQuery Ia mengendalikan $ secara lalai Jika parameter benar dimasukkan, konflik jQuery akan dikendalikan.
window.$ === jQuery digunakan untuk menentukan sama ada pembolehubah global adalah sama dengan jQuery Jika ia sama, pembolehubah global $ dipulihkan kepada pembolehubah sebelum jQuery dijalankan (disimpan dalam pembolehubah dalaman _$); window.jQuery === jQuery Apabila pengendalian konflik dalam didayakan dan pembolehubah global jQuery adalah sama dengan jQuery dalaman, jQuery global dipulihkan kepada keadaan sebelumnya. Kepentingan menilai tetingkap.$ === jQuery dan window.jQuery=jQuery adalah untuk melindungi pembolehubah yang ditentukan daripada ditimpa, seperti kod berikut:

//引入jQuery库
var $="String";
var jq=jQuery.noconflict();
var jQuery="This is a line";
var j=jq.noconflict(true);
console.log($);//这里如果没有window.$===jQuery这句判断,那么$将会等于undefined而不是"String"。
console.log(jQuery); //同上,如果没有判断window.jQuery===jQuery,重新定义的jQuery就会被undefined覆盖。

Salin selepas log masuk

Keseluruhan proses operasi ditunjukkan dalam rajah di bawah:

noConflict mengembalikan pembina jQuery di dalam perpustakaan jQuery, gunakannya seperti $!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan