Sebuah proyek yang sedang saya kerjakan membutuhkan penggunaan jQuery di halaman Web pelanggan. Pelanggan akan memasukkan potongan kode yang akan kami berikan yang mencakup beberapa <script>
elemen yang membangun widget di <script>
-created <iframe>
. Jika mereka belum menggunakan versi terbaru jQuery, ini juga akan termasuk (kemungkinan besar) a <script>
untuk versi jQuery yang dihosting Google.
Masalahnya adalah bahwa beberapa pelanggan mungkin sudah memiliki versi jQuery yang lebih lama diinstal. Meskipun ini dapat berfungsi jika setidaknya ini adalah versi yang cukup baru, kode kami bergantung pada beberapa fungsionalitas yang baru saja diperkenalkan di perpustakaan jQuery, jadi pasti ada saat ketika versi jQuery pelanggan terlalu lama. Kami tidak dapat meminta mereka untuk meningkatkan ke versi terbaru dari jQuery.
Apakah ada cara untuk memuat versi jQuery yang lebih baru untuk digunakan hanya dalam konteks kode kami, yang tidak akan mengganggu, atau memengaruhi, kode apa pun pada halaman pelanggan? Idealnya, mungkin kita bisa memeriksa keberadaan jQuery, mendeteksi versi, dan jika terlalu lama, maka entah bagaimana memuat versi terbaru hanya untuk digunakan untuk kode kita.
Saya memiliki ide untuk memuat jQuery di <iframe>
domain pelanggan yang juga mencakup domain kami <script>
, yang sepertinya layak, tetapi saya berharap ada cara yang lebih elegan untuk melakukannya (belum lagi tanpa penalti kinerja dan kompleksitas dari ekstra <iframe>
s).
sumber
Jawaban:
Ya, ini bisa dilakukan karena mode noconflict jQuery. http://blog.nemikor.com/2009/10/03/using-multiple-versions-of-jquery/
Lalu, bukannya
$('#selector').function();
, Anda akan melakukanjQuery_1_3_2('#selector').function();
ataujQuery_1_1_3('#selector').function();
.sumber
(function($) { /*your code here*/ }(jquery_x_x_x));
Setelah melihat ini dan mencobanya saya menemukan itu sebenarnya tidak memungkinkan lebih dari satu contoh jquery berjalan pada suatu waktu. Setelah mencari di sekitar saya menemukan bahwa ini melakukan trik dan kode jauh lebih sedikit.
Jadi kemudian menambahkan "j" setelah "$" itu yang harus saya lakukan.
sumber
(function($){ })($j)
Diambil dari http://forum.jquery.com/topic/multiple-versions-of-jquery-on-the-same-page :
$
danjQuery
milik versiX.$
danjQuery
milik versiY, plus_$
dan_jQuery
milik versiX.my_jQuery = jQuery.noConflict(true);
- sekarang$
danjQuery
milik versiX,_$
dan_jQuery
mungkin nol, danmy_jQuery
versiY.sumber
Anda dapat memiliki banyak versi jQuery yang berbeda di halaman Anda seperti yang Anda inginkan.
Gunakan
jQuery.noConflict()
:DEMO | Sumber
sumber
Dimungkinkan untuk memuat versi kedua dari jQuery menggunakannya dan kemudian mengembalikan ke aslinya atau mempertahankan versi kedua jika tidak ada jQuery dimuat sebelumnya. Berikut ini sebuah contoh:
sumber
Saya ingin mengatakan bahwa Anda harus selalu menggunakan versi stabil terbaru atau terbaru jQuery. Namun jika Anda perlu melakukan beberapa pekerjaan dengan versi yang lain maka Anda dapat menambahkan versi itu dan mengganti namanya
$
menjadi beberapa nama lain. ContohnyaLihat di sini jika Anda menulis sesuatu menggunakan
$
maka Anda akan mendapatkan versi terbaru. Tetapi jika Anda perlu melakukan sesuatu dengan yang lama maka gunakan$oldjQuery
saja$
.Berikut ini sebuah contoh
Demo
sumber
Tentu saja bisa. Tautan ini berisi detail tentang bagaimana Anda bisa mencapainya: https://api.jquery.com/jquery.noconflict/ .
sumber