我们正在编写一个类似SaaS的解决方案,需要我们的客户SCRIPT SRC
一些javascript代码,我们正在建设(想想谷歌分析场景)。我们想使用JQuery。然而,由于我们的客户可能已经有了冲突的JQuery版本或其他冲突的框架(prototype.js就是其中之一),我们不能告诉他们使用jquery.js。
我们正在考虑如何应对jquery源代码,以创建一个“私有”的jquery实例,并用myJQuery
和$J
简单地搜索/替换JQuery
和$
函数
这有什么原因不起作用吗?有没有人试过这样的东西?我们能对插件做些什么呢?
发布于 2010-05-11 21:52:53
您应该能够使用jQuery.noConflict()来实现这一点
但是这并没有解决插件的问题:
许多JavaScript库使用$作为函数名或变量名,就像jQuery一样。在jQuery的例子中,$只是jQuery的别名,所以所有功能都可以在不使用$的情况下使用。如果我们需要在使用jQuery的同时使用另一个JavaScript库,我们可以通过调用$.noConflict()将$的控制权返回给另一个库:
这种技术与.ready()方法为jQuery对象赋予别名的功能结合起来尤其有效,因为在传递给.ready()的回调中,如果愿意,我们可以使用$,而不必担心以后会发生冲突:
如果有必要,我们还可以通过将true作为参数传递给该方法来释放jQuery名称。这很少是必要的,如果我们必须这样做(例如,如果我们需要在同一个页面上使用多个版本的jQuery库),我们需要考虑大多数插件依赖于jQuery变量的存在,并且在这种情况下可能无法正确运行。
发布于 2010-05-11 22:01:20
你可以这样做:
// << 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"
https://stackoverflow.com/questions/2811211
复制相似问题