Bagaimana cara memeriksa versi jQuery apa yang dimuat?

466

Bagaimana cara memeriksa versi jQuery mana yang dimuat pada mesin klien? Klien mungkin memiliki jQuery yang dimuat tetapi saya tidak tahu bagaimana memeriksanya. Jika sudah dimuat bagaimana cara memeriksa versi dan awalannya seperti:

$('.class')
JQuery('.class')
Luke101
sumber
2
Klien mungkin memiliki jQuery yang dimuat jika Anda memasukkannya sebagai file untuk diunduh. Apa masalahnya, tepatnya?
Jared Farrish
1
Entah untuk apa OP membutuhkannya, tetapi jika Anda membuat skrip atau plugin yang memerlukan jQuery, Anda dapat memeriksa dan melempar kesalahan jika tidak ada atau versi yang terlalu lama.
JJJ
1
kemungkinan duplikat dari versi Dapatkan jQuery dari memeriksa objek jQuery
Mołot

Jawaban:

900
if (typeof jQuery != 'undefined') {  
    // jQuery is loaded => print the version
    alert(jQuery.fn.jquery);
}
Darin Dimitrov
sumber
29
Ada 2 cara untuk memeriksa versi jquery yang saat ini dimuat: jQuery.fn.jquerydan jQuery().jquery(singkatan:) $.fn.jquery $().jquery. Saya menulis tentang hal ini secara detail dengan tautan ke kode sumber jquery jika Anda ingin menggali lebih dalam.
Uzbekjon
3
versi yang lebih sederhana if (window.jQuery) { // jQuery is loaded => print the version alert(jQuery.fn.jquery); }
asherrard
6
Cek untuk undefined harus!==
plankguy
1
Catatan huruf kecil :)
Kacang Merah
2
Jangan gunakan jQuery().jquery. Itu menciptakan objek jQuery tanpa alasan, cukup gunakan apa yang dikatakan jawabannya.
30

Anda bisa memeriksa apakah jQueryobjek itu ada:

if( typeof jQuery !== 'undefined' ) ... // jQuery loaded

jQuery().jquery memiliki nomor versi.

Sedangkan untuk awalan, jQueryharus selalu berfungsi. Jika Anda ingin menggunakan, $Anda dapat membungkus kode Anda ke suatu fungsi dan meneruskannya jQuerysebagai parameter:

(function( $ ) {
    $( '.class' ).doSomething();  // works always
})( jQuery )
JJJ
sumber
3
The if( jQuery )akan melempar perkecualian jika jQuerytidak diketahui dan tidak akan bekerja.
Darin Dimitrov
Mungkin membungkusnya try {...}catch(e){...}?
Akash
2
Jangan gunakan jQuery().jquery. Ini menciptakan objek jQuery tanpa biaya. (menyalin komentar dari jawaban lain)
törzsmókus
19
$.fn.jquery
// If there is concern that there may be multiple implementations of `$` then:
jQuery.fn.jquery

Jika Anda mendapatkan kembali nomor versi - biasanya sebagai string - maka jQuery dimuat dan itulah versi yang Anda gunakan. Jika tidak dimuat maka Anda harus kembali undefinedatau mungkin bahkan kesalahan.

Pertanyaan yang cukup lama dan saya telah melihat beberapa orang yang telah menyebutkan jawaban saya dalam komentar. Namun, saya menemukan bahwa kadang-kadang jawaban hebat yang ditinggalkan sebagai komentar dapat diabaikan; terutama ketika ada banyak komentar untuk jawaban Anda mungkin menemukan diri Anda menggali tumpukan mereka mencari permata. Semoga ini bisa membantu seseorang!

Rockin4Life33
sumber
1
@ Jan Tidak, sama sekali tidak sama. Sebaliknya, IMO sangat rumit.
Rockin4Life33
18

... hanya karena metode ini belum disebutkan sejauh ini - buka konsol dan ketik:

$ === jQuery

Seperti @Juhana yang disebutkan di atas $().jqueryakan mengembalikan nomor versi.

ptim
sumber
sesuatu seperti($ === jQuery)?$().jquery:'no jquery';
UselesssCat
1
OP diminta untuk memeriksa versi yang dimuat. Ini tidak menjawab pertanyaan.
Akira Yamamoto
16

Saya telah menemukan ini sebagai cara terpendek dan paling sederhana untuk memeriksa apakah jQuery dimuat:

if (window.jQuery) {
    // jQuery is available.

    // Print the jQuery version, e.g. "1.0.0":
    console.log(window.jQuery.fn.jquery);
}

Metode ini digunakan oleh http://html5boilerplate.com dan lainnya.

Markus Amalthea Magnuson
sumber
@AndreFigueiredo Saya mengedit jawaban untuk memasukkan cara mendapatkan nomor versi, setelah memastikan jQuery dimuat.
Markus Amalthea Magnuson
5

Preferensi saya adalah:

console.debug("jQuery "+ (jQuery ? $().jquery : "NOT") +" loaded")

Hasil:

jQuery 1.8.0 dimuat

sshel207
sumber
Saya mendapatkan: tidak terdefinisi
Joe L.
Ini sedikit lebih baik, tetapi pencatatan tidak begitu berguna saat mengerjakan suatu aplikasi. Anda lebih baik menyimpan variabel terlebih dahulu. let has$ = typeof jQuery === 'function'; console.log('jQuery' + (has$ ? ` version ${jQuery.fn.jquery} loaded.` : ' is not loaded.'));
3

Anda sebenarnya harus membungkus ini dalam blok coba / tangkap untuk IE:

// Ensure jquery is loaded -- syntaxed for IE compatibility
try
{
    var jqueryIsLoaded=jQuery;
    jQueryIsLoaded=true;
}
catch(err)
{
    var jQueryIsLoaded=false;
}
if(jQueryIsLoaded)
{
    $(function(){
        /** site level jquery code here **/
    });
}
else
{
    // Jquery not loaded
}
AlienWebguy
sumber
IE tidak menangani typeof jQuery != 'undefined'? Apakah ini benar untuk setiap IE atau hanya yang lama?
JJJ
Cukup yakin itu untuk versi lama. Masih apa yang lebih memalukan daripada kesalahan JS besar yang mencegah halaman Anda bekerja, terlepas dari apakah itu kesalahan browser;)
AlienWebguy
Ini benar-benar banyak membantu saya. Saya berjuang untuk mendapatkan perilaku yang tepat di Firefox dan IE untuk memeriksa apakah jQuery dimuat atau tidak menggunakan WatiN. Sekarang dengan solusi ini, saya sangat senang. Terima kasih untukmu
rahoolm
2

Dalam satu baris dan minimum penekanan tombol (oops!):

alert($().jquery);
David White
sumber
1

Buka konsol Alat> pengembang dan tulis salah satu dari perintah berikut jQuery.fn.jquery console.log(jQuery().jquery);

Suman Koirala
sumber
0

Sesuai template monster blog , mengetik, skrip di bawah ini akan memberi Anda versi jquery di situs yang Anda lintasi sekarang.

 1. console.log(jQuery.fn.jquery);
 2. console.log(jQuery().jquery);
aniruddha
sumber
-2
if (jQuery){
   //jquery loaded
}

.....

asal
sumber
1
Beberapa perpustakaan lain menggunakan $.
Jared Farrish
2
Bagaimana jika mereka menggunakan Prototipe? Atau apa pun yang menggunakan $? Itu tidak unik untuk jQuery.
JJJ
Bagaimana jika jQuerytidak dimuat? (Ini akan melempar ReferenceError). Jawaban di atas benar, dan itulah sebabnya orang-orang memilih Anda untuk memilih.