Comment vérifier quelle version de jQuery est chargée?

466

Comment vérifier quelle version de jQuery est chargée sur la machine cliente? Le client peut avoir jQuery chargé mais je ne sais pas comment le vérifier. S'ils l'ont chargé, comment puis-je vérifier la version et le préfixe tels que:

$('.class')
JQuery('.class')
Luke101
la source
2
Le client peut avoir jQuery chargé si vous l'avez inclus en tant que fichier à télécharger. Quel est exactement le problème?
Jared Farrish
1
Je ne sais pas à quoi l'OP en a besoin, mais si vous créez un script ou un plugin qui nécessite jQuery, vous pouvez vérifier et lancer une erreur s'il n'y en a pas ou une version trop ancienne.
JJJ

Réponses:

900
if (typeof jQuery != 'undefined') {  
    // jQuery is loaded => print the version
    alert(jQuery.fn.jquery);
}
Darin Dimitrov
la source
29
Il existe 2 façons de vérifier la version jquery actuellement chargée: jQuery.fn.jqueryet jQuery().jquery(raccourcis:) $.fn.jquery $().jquery. J'ai écrit à ce sujet en détail avec des liens vers le code source jquery si vous souhaitez approfondir.
Uzbekjon
3
version encore plus simple if (window.jQuery) { // jQuery is loaded => print the version alert(jQuery.fn.jquery); }
asherrard
6
Le chèque pour indéfini devrait être!==
plankguy
1
Remarque en minuscules :)
The Red Pea
2
Ne pas utiliser jQuery().jquery. Il crée un objet jQuery pour rien, utilisez simplement ce que dit la réponse.
30

Vous pouvez simplement vérifier si l' jQueryobjet existe:

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

jQuery().jquery a le numéro de version.

Quant au préfixe, jQuerydevrait toujours fonctionner. Si vous souhaitez utiliser, $vous pouvez envelopper votre code dans une fonction et lui passer jQuerycomme paramètre:

(function( $ ) {
    $( '.class' ).doSomething();  // works always
})( jQuery )
JJJ
la source
3
Le if( jQuery )lancera une exception s'il jQueryest inconnu et cela ne fonctionnera pas.
Darin Dimitrov
Peut-être l'envelopper try {...}catch(e){...}?
Akash
2
Ne pas utiliser jQuery().jquery. Il crée un objet jQuery pour rien. (commentaire copié d'une autre réponse)
törzsmókus
19
$.fn.jquery
// If there is concern that there may be multiple implementations of `$` then:
jQuery.fn.jquery

Si vous récupérez un numéro de version - généralement sous forme de chaîne - alors jQuery est chargé et c'est la version avec laquelle vous travaillez. S'il n'est pas chargé, vous devriez récupérer undefinedou peut-être même une erreur.

Assez vieille question et j'ai vu quelques personnes qui ont déjà mentionné ma réponse dans les commentaires. Cependant, je trouve que parfois d'excellentes réponses laissées sous forme de commentaires peuvent passer inaperçues; surtout quand il y a beaucoup de commentaires sur une réponse, vous pouvez vous retrouver à en fouiller des tas à la recherche d'un joyau. Espérons que cela aide quelqu'un!

Rockin4Life33
la source
1
@Janar Non, ce n'est pas du tout exactement la même chose. Trop compliqué en revanche, l'OMI.
Rockin4Life33
18

… Juste parce que cette méthode n'a pas été mentionnée jusqu'à présent - ouvrez la console et tapez:

$ === jQuery

Comme @Juhana mentionné ci-dessus $().jqueryrenverra le numéro de version.

ptim
la source
quelque chose comme($ === jQuery)?$().jquery:'no jquery';
UselesssCat
1
OP a demandé de vérifier la version chargée. Cela ne répond pas à la question.
Akira Yamamoto
16

J'ai trouvé que c'était le moyen le plus court et le plus simple de vérifier si jQuery était chargé:

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

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

Cette méthode est utilisée par http://html5boilerplate.com et d'autres.

Markus Amalthea Magnuson
la source
@AndreFigueiredo J'ai modifié la réponse pour inclure comment obtenir le numéro de version, après m'être assuré que jQuery est chargé.
Markus Amalthea Magnuson
5

Ma préférence est:

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

Résultat:

jQuery 1.8.0 chargé

sshel207
la source
J'obtiens: undefined
Joe L.
C'est un peu mieux, mais la journalisation n'est pas très utile lorsque vous travaillez sur une application. Vous feriez mieux d'enregistrer une variable en premier. let has$ = typeof jQuery === 'function'; console.log('jQuery' + (has$ ? ` version ${jQuery.fn.jquery} loaded.` : ' is not loaded.'));
3

Vous devriez en fait envelopper cela dans un bloc try / catch pour 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
la source
IE ne gère pas typeof jQuery != 'undefined'? Est-ce vrai pour tous les IE ou seulement pour les plus anciens?
JJJ
Je suis sûr que c'est pour les versions héritées. Quoi de plus embarrassant qu'une grosse erreur JS empêchant votre page de fonctionner, que ce soit la faute du navigateur;)
AlienWebguy
Cela m'a vraiment beaucoup aidé. J'avais du mal à obtenir le comportement exact sur Firefox et IE pour vérifier si jQuery est chargé ou non avec WatiN. Maintenant, avec cette solution de contournement, je suis très heureux. Merci à toi!
rahoolm
2

En une seule ligne et le minimum de touches (oups!):

alert($().jquery);
David White
la source
1

Accédez à l'outil du développeur> console et écrivez l'une des commandes suivantes jQuery.fn.jquery console.log(jQuery().jquery);

Suman Koirala
la source
0

Selon le blog de Monster Monster , en tapant, ces scripts ci-dessous vous donneront la version de jquery dans le site que vous parcourez maintenant.

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

.....

genèse
la source
1
Certaines autres bibliothèques utilisent $.
Jared Farrish
2
Et s'ils utilisent Prototype? Ou autre chose qui utilise $? Ce n'est pas unique à jQuery.
JJJ
Et s'il jQueryn'est pas chargé? (Ça va jeter un ReferenceError). La réponse ci-dessus est correcte, et c'est pourquoi les gens votent contre votre réponse.