Rumah  >  Artikel  >  hujung hadapan web  >  Cara yang berkesan untuk menyelesaikan versi jquery conflicts_jquery

Cara yang berkesan untuk menyelesaikan versi jquery conflicts_jquery

WBOY
WBOYasal
2016-05-16 16:38:041424semak imbas

Rakan yang telah menggunakan jQuery tahu bahawa versi jQuery yang berbeza boleh menyebabkan konflik Artikel ini mencadangkan penyelesaian yang berkesan untuk masalah ini seperti berikut:

Kes: Selesaikan konflik antara jQuery 1.3.2 dan 1.4.2. (Contoh ini telah diuji dan lulus!)

Langkah satu: Tambahkan ayat di hujung kod sumber 1.4.2:

var $j4 = jQuery.noConflict(true);

Sebab saya menambahkannya di sini dalam kod sumber dan bukannya menambahkannya apabila ia diperlukan seperti kebanyakan artikel yang disebut adalah kerana banyak pemalam berdasarkan 1.4.2 perlu ditambah dengan menambahkannya di sini boleh mengelakkan penambahan terlalu banyak pemalam. Kod ayat membawa kepada pendua. Ayat ini melepaskan semua kebenaran rujukan jQuery dan $ dalam 1.4.2. Maksudnya, pemalam berdasarkan 1.4.2 tidak lagi boleh menggunakan jQuery dan $. Pada masa yang sama, berikan ruang nama baharu kepada $j4 Ambil perhatian bahawa ia adalah atribut tetingkap. Jika anda melihat kod sumber 1.4.2, anda akan mendapati bahawa ia sebenarnya melaksanakan dua ayat ini:

window.$=_$;
window.jQuery=_jQuery;

Prinsipnya sama seperti tetingkap.$=_temp$ (mengembalikan ruang nama), tetapi penamaannya berbeza.

Langkah 2: Tambahkan kod berikut pada kepala semua pemalam berdasarkan rangka kerja 1.4.2:

var _temp$ = window.$,_tempjQuery = window.jQuery;

Letakkan jQuery1.3.2's $ dan jQuery ke dalam ruang pembolehubah sementara:

window.$ = $j4;

Ayat ini dan ayat di bawah semuanya untuk kod tengah untuk menggunakan jQuery dan $ dengan betul. $j4 berikut adalah untuk memberi mereka rujukan yang betul.

window.jQuery = $j4;

Terdapat tiga sebab mengapa kita perlu menyimpan pembolehubah sementara dahulu:

① Kami tidak mahu menukar sejumlah besar kod sumber pemalam jQuery. Ia juga merupakan cara yang baik untuk menambah kod yang diubah suai di kepala dan ekor, meninggalkan kod asal di tengah tidak berubah.

② Kerana 1.4.2 telah melepaskan kawalan jQuery dan $, tetapi kod pemalam sedia ada menggunakannya untuk rujukan, kerana pemalam tidak boleh meramalkan konflik, walaupun terdapat konflik dengan pemalam yang dibangunkan oleh orang lain. . Gunakan $ atau jQuery untuk merujuk, melainkan ia bukan pemalam di bawah jQuery.

③ Untuk mengelakkan pemalam daripada terus menggunakan window.$ dan window.jQuery untuk merujuk kepada 1.3.2 jQuery dan $, walaupun keadaan ini agak jarang berlaku, ia hanya untuk berjaga-jaga.

Kod asal di tengah kekal tidak berubah dan kod berikut ditambahkan pada penghujung:

window.$ = _temp$;//将$的引用权限返还给jQuery1.3.
window.jQuery = _tempjQuery;//将jQuery的引用权限返还给jQuery1.3.

Langkah 3: Jika anda ingin menggunakan fungsi pemilihan berdasarkan jQuery1.4.2 pada masa hadapan, anda hanya boleh menggunakan $j4(elemen).

Ringkasan: Penyelesaian yang boleh dilaksanakan setakat ini: jQuery1.4.2 menyerahkan sepenuhnya kebenaran kawalan $ dan jQuery. 1.3.2 Berikan hak kawalan $ tetapi bukan hak jQuery Malah, jQuery juga boleh diserahkan, tetapi ia mesti diberi alias $j3. Adalah lebih baik untuk meletakkan prototaip di belakang jQuery1.3.2, yang memperoleh kebenaran kawalan sebanyak $. Cuma jika anda ingin menggunakan jQuery1.4.2 pada masa hadapan, anda mesti menggunakan $j4 untuk merujuknya. Tetapi dengan cara ini, tidak kira berapa banyak konflik versi rangka kerja jQuery yang ada, semuanya akan diselesaikan. Bagaimana jika jQuery 1.2 datang, rujuk kepada langkah pelaksanaan (2), tetapi langkah pertama ditukar kepada:

var $j2 = jQuery.noConflict(true);

Hanya gunakan $j2(elemen) dalam langkah ketiga. Prinsipnya adalah sama.

Saya percaya bahawa apa yang diterangkan dalam artikel ini mempunyai nilai rujukan tertentu untuk pengaturcaraan jQuery semua orang.

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