Jak sprawdzić, która wersja jQuery jest załadowana?

466

Jak sprawdzić, która wersja jQuery jest załadowana na maszynie klienta? Klient może mieć załadowane jQuery, ale nie wiem, jak to sprawdzić. Jeśli mają go załadowane, jak sprawdzić wersję i prefiks, takie jak:

$('.class')
JQuery('.class')
Luke101
źródło
2
Klient może załadować jQuery, jeśli podałeś go jako plik do pobrania. Na czym dokładnie polega problem?
Jared Farrish,
1
Nie wiem, do czego potrzebuje OP, ale jeśli tworzysz skrypt lub wtyczkę wymagającą jQuery, możesz sprawdzić i zgłosić błąd, jeśli go nie ma lub jest to zbyt stara wersja.
JJJ

Odpowiedzi:

900
if (typeof jQuery != 'undefined') {  
    // jQuery is loaded => print the version
    alert(jQuery.fn.jquery);
}
Darin Dimitrov
źródło
29
Istnieją 2 sposoby sprawdzenia aktualnie załadowanej wersji jquery: jQuery.fn.jqueryi jQuery().jquery(stenografia:) $.fn.jquery $().jquery. Napisałem o tym szczegółowo z linkami do kodu źródłowego jquery, jeśli chcesz głębiej kopać.
Uzbekjon
3
jeszcze prostsza wersja if (window.jQuery) { // jQuery is loaded => print the version alert(jQuery.fn.jquery); }
asherrard
6
Czek na niezdefiniowany powinien być!==
plankguy
1
Uwaga małe litery :)
The Red Pea
2
Nie używać jQuery().jquery. Tworzy obiekt jQuery za darmo, wystarczy użyć tego, co mówi odpowiedź.
30

Możesz po prostu sprawdzić, czy jQueryobiekt istnieje:

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

jQuery().jquery ma numer wersji.

Jeśli chodzi o prefiks, jQuerypowinien zawsze działać. Jeśli chcesz użyć $, możesz zawinąć kod w funkcję i przekazać jQueryją jako parametr:

(function( $ ) {
    $( '.class' ).doSomething();  // works always
})( jQuery )
JJJ
źródło
3
if( jQuery )Rzuci wyjątek, jeśli jQuerynie jest znana i nie będzie działać.
Darin Dimitrov,
Może to owinąć try {...}catch(e){...}?
Akash
2
Nie używać jQuery().jquery. Tworzy obiekt jQuery za darmo. (skopiowano komentarz z innej odpowiedzi)
törzsmókus
19
$.fn.jquery
// If there is concern that there may be multiple implementations of `$` then:
jQuery.fn.jquery

Jeśli otrzymasz numer wersji - zwykle w postaci ciągu - wtedy jQuery zostanie załadowane i z tą wersją pracujesz. Jeśli nie zostanie załadowany, powinieneś wrócić, undefineda może nawet błąd.

Dość stare pytanie i widziałem kilka osób, które już wspomniały o mojej odpowiedzi w komentarzach. Uważam jednak, że czasami świetne odpowiedzi, które pozostają, ponieważ komentarze mogą pozostać niezauważone; zwłaszcza, gdy jest wiele komentarzy do odpowiedzi, możesz przekopać się przez stosy ich w poszukiwaniu klejnotu. Mam nadzieję, że to komuś pomoże!

Rockin4Life33
źródło
1
@Janar Nie, to wcale nie jest dokładnie to samo. W przeciwieństwie do tego zbyt skomplikowane, IMO.
Rockin4Life33
18

… Tylko dlatego, że jak dotąd nie wspomniano o tej metodzie - otwórz konsolę i wpisz:

$ === jQuery

Jak wspomniano powyżej @Juhana $().jqueryzwróci numer wersji.

ptim
źródło
coś w stylu($ === jQuery)?$().jquery:'no jquery';
UselesssCat
1
OP poprosił o sprawdzenie załadowanej wersji. To nie odpowiada na pytanie.
Akira Yamamoto,
16

Odkryłem, że jest to najkrótszy i najprostszy sposób sprawdzenia, czy jQuery jest załadowany:

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

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

Ta metoda jest używana przez http://html5boilerplate.com i inne.

Markus Amalthea Magnuson
źródło
@AndreFigueiredo Zredagowałem odpowiedź, aby uwzględnić sposób uzyskania numeru wersji, po upewnieniu się, że jQuery jest załadowany.
Markus Amalthea Magnuson
5

Moje preferencje to:

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

Wynik:

Załadowano jQuery 1.8.0

sshel207
źródło
Dostaję: niezdefiniowany
Joe L.
Jest to nieco lepsze, ale rejestrowanie nie jest przydatne podczas pracy z aplikacją. Lepiej najpierw zapisz zmienną. let has$ = typeof jQuery === 'function'; console.log('jQuery' + (has$ ? ` version ${jQuery.fn.jquery} loaded.` : ' is not loaded.'));
3

Powinieneś owinąć to w blok try / catch dla 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
źródło
IE nie obsługuje typeof jQuery != 'undefined'? Czy to prawda dla każdego IE, czy tylko starszych?
JJJ
Jest całkiem pewny, że dotyczy to starszych wersji. Co jednak jest bardziej zawstydzającego niż wielki błąd JS uniemożliwiający działanie strony, niezależnie od tego, czy jest to wina przeglądarki;)
AlienWebguy,
To bardzo mi pomogło. Usiłowałem uzyskać dokładne zachowanie w Firefoksie i IE do sprawdzania, czy jQuery jest załadowany czy nie przy użyciu WatiN. Teraz dzięki temu obejściu jestem bardzo szczęśliwy. Dzięki Tobie!
rahoolm
2

W jednej linii i minimalnej liczbie naciśnięć klawiszy (ups!):

alert($().jquery);
David White
źródło
1

Przejdź do narzędzia> konsola programisty i napisz jedno z poniższych poleceń jQuery.fn.jquery console.log(jQuery().jquery);

Suman Koirala
źródło
0

Zgodnie z szablonowym blogiem potworów , pisząc, poniższe skrypty podadzą ci wersję jquery na stronie, którą teraz odwiedzasz.

 1. console.log(jQuery.fn.jquery);
 2. console.log(jQuery().jquery);
aniruddha
źródło
-2
if (jQuery){
   //jquery loaded
}

.....

geneza
źródło
1
Niektóre inne biblioteki używają $.
Jared Farrish,
2
Co jeśli używają Prototypu? Lub cokolwiek innego, co wykorzystuje $? To nie jest unikalne dla jQuery.
JJJ,
Co jeśli jQuerynie jest załadowany? (Rzuci a ReferenceError). Powyższa odpowiedź jest poprawna i dlatego ludzie głosują w dół na twoją odpowiedź.