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

Posted

技术标签:

【中文标题】如何检查加载了哪个版本的 jQuery?【英文标题】:How to check what version of jQuery is loaded? 【发布时间】:2011-10-21 21:11:47 【问题描述】:

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

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

【问题讨论】:

如果您将 jQuery 包含为要下载的文件,客户端可能已加载它。到底是什么问题? 不知道 OP 需要它做什么,但如果你正在制作一个需要 jQuery 的脚本或插件,你可以检查并在它不存在或版本太旧时抛出错误。 Get jQuery version from inspecting the jQuery object 的可能重复项 【参考方案1】:
if (typeof jQuery != 'undefined')   
    // jQuery is loaded => print the version
    alert(jQuery.fn.jquery);

【讨论】:

有两种方法可以检查当前加载的jquery版本:jQuery.fn.jqueryjQuery().jquery(简写:$.fn.jquery$().jquery)。如果您想更深入地挖掘,我写了关于 it in details 的链接到 jquery 源代码。 更简单的版本if (window.jQuery) // jQuery is loaded => print the version alert(jQuery.fn.jquery); 检查未定义应该是!== 注意小写:) 不要使用jQuery().jquery。它创建了一个 jQuery 对象,只需使用答案所说的内容。【参考方案2】:

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

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

jQuery().jquery 有版本号。

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

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

【讨论】:

如果jQuery 未知且不起作用,if( jQuery ) 将抛出异常。 也许用try ...catch(e)... 包装它? 不要使用jQuery().jquery。它创建了一个 jQuery 对象。 (从另一个答案复制评论)【参考方案3】:

我的goto表示确定版本:

$.fn.jquery

另一个类似的选项:

$().jQuery

如果担心$ 可能有多个实现——使$. 模棱两可——那么请改用jQuery

jQuery.fn.jquery

最近我在一些网站上使用 $.fn.jquery$().jQuery 时遇到了问题,所以我想注意第三个简单的命令来拉取 jQuery 版本。

如果你得到一个版本号——通常是一个字符串——那么 jQuery 就会被加载,这就是你正在使用的版本。如果没有加载,那么你应该返回undefined 或者甚至可能是一个错误。

相当老的问题,我见过一些人已经在 cmets 中提到了我的答案。但是,我发现有时作为 cmets 留下的很好的答案可能会被忽视。特别是当有很多 cmets 回答时,您可能会发现自己在成堆的挖掘中寻找宝石。希望这可以帮助某人!

【讨论】:

@Janar 不,完全不一样。相比之下,IMO 过于复杂。 您是否尝试过在控制台中输入“5”?然后下一个“$_”会给你“5”。【参考方案4】:

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

$ === jQuery

正如上面提到的@Juhana $().jquery 将返回版本号。

【讨论】:

类似($ === jQuery)?$().jquery:'no jquery'; OP 要求检查加载的版本。这没有回答问题。【参考方案5】:

我发现这是检查 jQuery 是否已加载的最短且最简单的方法:

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

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

http://html5boilerplate.com等人使用此方法。

【讨论】:

@AndreFigueiredo 在确保已加载 jQuery 之后,我编辑了答案以包括如何获取版本号。【参考方案6】:

我的偏好是:

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

结果:

已加载 jQuery 1.8.0

【讨论】:

我得到:未定义 这有点好,但是在开发应用程序时日志记录并不是那么有用。你最好先保存一个变量。 let has$ = typeof jQuery === 'function'; console.log('jQuery' + (has$ ? ` version $jQuery.fn.jquery loaded.` : ' is not loaded.')); 【参考方案7】:

一行和最少的击键(哎呀!):

alert($().jquery);

【讨论】:

【参考方案8】:

您实际上应该将它包装在 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? 很确定它适用于旧版本。还有什么比一个大的 JS 错误阻止你的页面工作更令人尴尬,不管它是否是浏览器的错 ;) 这对我帮助很大。我正在努力获得跨 Firefox 和 IE 的确切行为,以检查是否使用 WatiN 加载了 jQuery。现在有了这个解决方法,我很高兴。谢谢你!【参考方案9】:

转到开发人员的工具> 控制台并编写以下命令之一 jQuery.fn.jquery console.log(jQuery().jquery);

【讨论】:

【参考方案10】:

根据Template monster blog,键入以下这些脚本将为您提供您现在正在遍历的站点中的 jquery 版本。

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

【讨论】:

【参考方案11】:

也许不言自明,但我发现最简单的方法是查看实际文件中注释的版本(通常是 jquery.min.js)。或者,如果使用类似 code.jquery.com 的东西,版本号在 https 参考中(即https://code.jquery.com/jquery-1.11.3.js)。

enter image description here

【讨论】:

【参考方案12】:
if (jQuery)
   //jquery loaded

.....

【讨论】:

其他一些库使用$ 如果他们使用原型怎么办?或者其他任何使用$ 的东西?它不是 jQuery 独有的。 如果jQuery 没有加载怎么办? (它会抛出一个ReferenceError)。上面的答案是正确的,这就是人们对你的答案投反对票的原因。

以上是关于如何检查加载了哪个版本的 jQuery?的主要内容,如果未能解决你的问题,请参考以下文章

检查 iframe 内是不是加载了 Vimeo 视频 - jquery

Jquery Select2 插件版本检查

jQuery 或 Javascript 检查图像是不是加载

如何检查图片是不是已完全加载?

Perl6 如何决定加载哪个版本的模块?

jQuery:如何在第三方脚本加载不同版本的 jQuery 之前保存我的 jQuery 版本?