多个版本的 jQuery [重复]

Posted

技术标签:

【中文标题】多个版本的 jQuery [重复]【英文标题】:Multiple versions of jQuery [duplicate] 【发布时间】:2014-08-11 23:28:49 【问题描述】:

我正在开发允许第三方上传 html sn-ps 的服务。在其中一些 sn-ps 中可能有指向 jQuery、SizzleJS... 库和需要这些库的特定版本的 javascript 代码的链接。该服务显然需要它自己的 jQuery 版本。

有什么方法可以加载多个版本的 jQuery(或只是 SizzleJS),并且我自己的代码只引用我的 jQuery 版本,而第三方引用他们可能链接到的任何版本?也许使用不同的命名空间?我该怎么做?

我希望我的问题足够清楚。

【问题讨论】:

搜索noConflict() 我见过noConflict,但我不知道如何实现这个 【参考方案1】:

您有一个noConflict() 电话:

如果由于某种原因加载了两个版本的 jQuery(不是 推荐),从第二个版本调用$.noConflict( true ) 将全局作用域的 jQuery 变量返回到第一个变量 版本。

最好的实现之一可以在下面的 sn-p 中显示:

var j = jQuery.noConflict();
// Do something with jQuery
j( "div p" ).hide();
// Do something with another library's $()
// This other can library be an older (or newer) jQuery as well
$( "content" ).style.display = "none";

【讨论】:

明确一点:假设我的库是第一个,我执行 var j = jQuery.noConflict();在加载第二个库之后,我的库是通过“j”而不是通常的“$”引用的,对吗? 如果先加载自己的库,然后加载jQuery,然后执行j = $.noConflict();,那么j指的是最后加载的库(本例中为jQuery)。 我可以加载我的库吗,执行 j = $.noConflict();然后是第二个库,所以“j”会引用第一个库? @AdrienHingert noConflict 是一个 jQuery 功能。您也不能将它与所有其他库一起使用。【参考方案2】:

像Codepen 这样的网站通过将用户的代码(包括用户的 jQuery)放在来自不同域来源的 iframe 中来做到这一点。

【讨论】:

不幸的是,这对我来说是不可能的 那么noConflict() 可能是您的最佳选择。

以上是关于多个版本的 jQuery [重复]的主要内容,如果未能解决你的问题,请参考以下文章

同一页面上的多个版本的 JQuery [重复]

我如何在一页中使用多个jquery版本[重复]

Bootstrap 4如何在同一页面上使用多个jQuery版本[重复]

jquery删除多个类[重复]

jQuery选择具有多个类的输入[重复]

如何在jquery中放置多个样式属性[重复]