如何检查加载了哪个版本的jQuery?


466

如何检查客户端计算机上加载了哪个版本的jQuery?客户端可能已加载jQuery,但我不知道如何检查它。如果他们已加载它,如何检查版本和前缀,例如:

$('.class')
JQuery('.class')

2
如果您将jQuery包含为要下载的文件,则客户端可能已加载jQuery。到底是什么问题?
贾里德·法里什

1
Dunno关于OP需要什么,但是如果您要编写一个需要jQuery的脚本或插件,则可以检查并抛出错误(如果它不存在或版本太旧)。
JJJ

Answers:


900
if (typeof jQuery != 'undefined') {  
    // jQuery is loaded => print the version
    alert(jQuery.fn.jquery);
}

29
有两种方法可以检查当前加载的jquery版本:jQuery.fn.jqueryjQuery().jquery(简写:)$.fn.jquery $().jquery。如果您想更深入地了解我用指向jquery源代码的链接详细介绍了
乌兹别克斯坦,2013年

3
甚至更简单的版本 if (window.jQuery) { // jQuery is loaded => print the version alert(jQuery.fn.jquery); }
asherrard

6
对于undefined的检查应为!==
–plankguy

1
注意小写字母:)
红豌豆(Red Pea)

2
不要使用jQuery().jquery。它只使用答案说了什么就创建了一个jQuery对象。

30

您可以只检查jQuery对象是否存在:

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

jQuery().jquery 有版本号。

至于前缀,jQuery应该始终有效。如果要使用$,可以将代码包装到一个函数中,并将jQuery其作为参数传递给它:

(function( $ ) {
    $( '.class' ).doSomething();  // works always
})( jQuery )

3
if( jQuery )如果将抛出一个异常jQuery是未知的,它不会工作。
Darin Dimitrov

也许把它包起来try {...}catch(e){...}
阿卡什(Akash)

2
不要使用jQuery().jquery。它创建了一个jQuery对象。(从另一个答案抄评论)
törzsmókus

19
$.fn.jquery
// If there is concern that there may be multiple implementations of `$` then:
jQuery.fn.jquery

如果您获取版本号(通常是字符串),则jQuery将被加载,这就是您正在使用的版本。如果未加载,则应该返回undefined,甚至可能出错。

很老的问题,我已经看到一些人在评论中提到了我的答案。但是,我发现,有时由于注释而留下的出色答案可能会被忽略;尤其是当答案中有很多评论时,您可能会发现自己在寻找他们的宝石时,正在钻研它们。希望这可以帮助某人!


1
@Janar不,完全不一样。相反,IMO过于复杂。
Rockin4Life33 2013年

18

…只是因为到目前为止尚未提到此方法-打开控制台并键入:

$ === jQuery

由于上述@Juhana $().jquery将返回版本号。


($ === jQuery)?$().jquery:'no jquery';
UselesssCat

1
OP要求检查加载的版本。这不能回答问题。
山本彰(Akira Yamamoto)


5

我的偏好是:

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

结果:

jQuery 1.8.0已加载


我得到了:undefined
Joe L.

这样会更好一些,但是在应用程序上工作时日志记录并没有多大用处。最好先保存一个变量。let has$ = typeof jQuery === 'function'; console.log('jQuery' + (has$ ? ` version ${jQuery.fn.jquery} loaded.` : ' is not loaded.'));

3

您实际上应该将其包装在IE的try / catch块中:

// 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
}

IE无法处理typeof jQuery != 'undefined'?是对每个IE还是对较旧的IE都是如此?
JJJ

可以肯定的是,它适用于旧版本。仍然是比一个大的ol'JS错误(使您的页面无法工作,无论是否是浏览器的错误)更令人尴尬的;)
AlienWebguy 2011年

这确实对我有很大帮助。我正在努力获取整个Firefox和IE的确切行为,以检查是否使用WatiN加载了jQuery。现在有了这种解决方法,我感到非常高兴。谢谢你!
rahoolm



0

按照Template Monster Blog的输入,下面的这些脚本将为您提供您现在正在遍历的站点中的jquery版本。

 1. console.log(jQuery.fn.jquery);
 2. console.log(jQuery().jquery);

-2
if (jQuery){
   //jquery loaded
}

.....


1
其他一些库使用$
贾里德·法瑞什

2
如果他们使用原型怎么办?或其他任何使用$?它不是jQuery独有的。
JJJ

如果jQuery未加载怎么办?(它将抛出ReferenceError)。上面的答案是正确的,这就是为什么人们不赞成您的答案。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.