私有JQuery实例

时间:2010-05-11 13:48:18

标签: jquery

我们正在编写一个类似SaaS的解决方案,要求我们的客户SCRIPT SRC我们正在构建一些javascript代码(想想Google Analytics方案)。我们想使用JQuery。但是,由于我们的客户可能已经存在冲突的JQuery版本或其他冲突的框架(prototype.js为一个),我们无法告诉他们来源jquery.js。

我们正在考虑应对jquery源以创建“私有”jquery实例,并使用JQuery$简单搜索/替换myJQuery$J函数

这有什么理由不起作用吗?有没有人尝试过这样的东西?我们可以对插件做些什么?

2 个答案:

答案 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变量,在这种情况下可能无法正常运行