首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RequireJS -在上下文中隔离jQuery版本和插件

RequireJS -在上下文中隔离jQuery版本和插件
EN

Stack Overflow用户
提问于 2012-10-26 03:48:19
回答 1查看 711关注 0票数 10

我有一个项目,它利用多个需求上下文和动态加载的jQuery版本和插件。( jQuery版本将集中来源,不会内联)。主机和每个上下文的jQuery完整性以及插件隔离都是至关重要的。

我正在为RequireJS编写一个加载程序插件,以处理以下用例:

  • 在特定的需求上下文中
  • 在不影响主机页fn或任何其他所需上下文的情况下,我想:
    • 加载我需要的任何版本的jQuery
    • 将插件加载到特定jQuery版本的fn上
    • 在所需的jQuery版本上具有引用完整性,以便我所需上下文中的任何模块都可以共享插件

我有一个带有测试这里的加载程序示例项目。

在最后一个条件下,它失败了,当我使用加载程序进行第二次调用时,它正在吹走以前的版本。

我还使用eval将加载插件中的$引用隔离到本地加载的jQuery版本范围。任何关于更好的方法的想法都将不胜感激。

如果有更简单/更干净的解决方案,希望保持简单(愚蠢)。

谢谢,非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2013-03-03 23:46:37

我还得用插件来做这件事。你应该去看看http://api.jquery.com/jQuery.noConflict/。举一个例子:

代码语言:javascript
复制
jQueryLocal = jQuery.noConflict(true);

但是,您当然应该尽量避免加载多个jQueries。例如,您可以检查是否已经加载了足够的版本(在我的示例中,我在加载任何内容之前检查了1.9+是否可用,如果可以,则将局部变量设置为对现有全局jQuery对象的简单引用,但随后我没有使用插件。

您可以使用以下方法检查该版本:

代码语言:javascript
复制
var jQueryLocal;
var versions = (jQuery && /^([0-9]+)\.([0-9]+)\./.exec( jQuery.fn.jquery )) || [0,0];
if( versions[0] > 1 || versions[1] >= 9 ) {
    jQueryLocal = jQuery;
} else {
    // load script with whatever you're doing. If it's asynchronous, set callbacks etc.
    jQueryLocal = jQuery.noConflict(true);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13080463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档