Rumah >hujung hadapan web >tutorial js >Penguraian prinsip pelaksanaan fungsi noconflict dalam jQuery_jquery

Penguraian prinsip pelaksanaan fungsi noconflict dalam jQuery_jquery

WBOY
WBOYasal
2016-05-16 16:16:061187semak imbas

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)


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覆盖。

Keseluruhan proses operasi ditunjukkan dalam rajah di bawah:

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

Kenyataan:
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