我们正在编写一个类似SaaS的解决方案,要求我们的客户SCRIPT SRC
我们正在构建一些javascript代码(想想Google Analytics方案)。我们想使用JQuery。但是,由于我们的客户可能已经存在冲突的JQuery版本或其他冲突的框架(prototype.js为一个),我们无法告诉他们来源jquery.js。
我们正在考虑应对jquery源以创建“私有”jquery实例,并使用JQuery
和$
简单搜索/替换myJQuery
和$J
函数
这有什么理由不起作用吗?有没有人尝试过这样的东西?我们可以对插件做些什么?
答案 0 :(得分:3)
你可以这样做:
// << include your own jQuery version >>
alert("jQuery version: " + jQuery().jquery); // 1.4.2 -- or whatever you included
ourJQ = jQuery.noConflict(true);
alert("jQuery version: " + jQuery().jquery); // 1.3.2 -- or whatever was included before
如果您要包含插件或任何内容,只需将其全部包装在匿名函数中以创建闭包:
(function ($) {
// in here, $ is your jQuery version
alert($().jquery); // "1.4.2"
})(ourJQ);
// out here, $ is the previously included version
alert($().jquery) // "1.3.2"
答案 1 :(得分:2)
您应该可以使用jQuery.noConflict()
来实现这一目标这虽然不能解决插件问题:
许多JavaScript库使用$作为函数或变量名,就像jQuery一样。在jQuery的情况下,$只是jQuery的别名,因此所有功能都可以在不使用$的情况下使用。如果我们需要在jQuery旁边使用另一个JavaScript库,我们可以通过调用$ .noConflict()将$的控制权返回给另一个库:
这种技术与.ready()方法对jQuery对象进行别名的能力特别有效,因为在传递给.ready()的回调中,如果我们愿意,我们可以使用$而不用担心以后的冲突:
如果有必要,我们可以通过将true作为参数传递给方法来释放jQuery名称。这很少是必要的,如果我们必须这样做(例如,如果我们需要在同一页面上使用多个版本的jQuery库),我们需要考虑大多数插件依赖于jQuery变量,在这种情况下可能无法正常运行。