您可以通过在no-conflict mode运行你的jQuery的版本实现这一目标。 “无冲突”模式是让jQuery在其他框架(如prototype)上工作的典型解决方案,也可以在此处使用,因为它基本上为您加载的每个jQuery版本命名空间。
<script src="jQuery1.3.js"></script>
<script>
jq13 = jQuery.noConflict(true);
</script>
<!-- original author's jquery version -->
<script src="jQuery1.2.3.js"></script>
这一变化将意味着任何你想用就需要使用jq13
而非$
,例如被称为jQuery的东西
jq13("#id").hide();
它不具有相同的页面上运行的两个版本一个理想的情况,但如果你已经别无选择,那么上面的方法应该让你同时使用两个不同的版本。
也出于好奇,如果我们要使用额外的控件 需要引用另一个版本的jQuery?
如果您需要添加的jQuery的另一个版本,你可以扩展以上:
<script src="jQuery1.3.js"></script>
<script>
jq13 = jQuery.noConflict(true);
</script>
<script src="jQuery1.3.1.js"></script>
<script>
jq131 = jQuery.noConflict(true);
</script>
<!-- original author's jquery version -->
<script src="jQuery1.2.3.js"></script>
变量jq13
和jq131
将分别被用于您所需要的特定版本的功能。
重要的是,由原始开发商使用的jQuery的最后加载 - 原开发者可能会写的假设$()
会使用他们的jQuery的版本下他们的代码。如果你在他们之后加载另一个版本,$
将被你加载的最后一个版本“抓住”,这意味着原始开发者的代码运行在最新的库版本上,使得noConflicts
有点多余!
是否控制未发布更新的作者的作者?还是新版本不兼容? 非常奇怪的是,商业第三方控件供应商创建了一个硬编码到经常更新的开源javascript特定版本的控件。 – BlackMael 2009-02-09 14:18:49
如果您使用坚持固定版本的jQuery的多服务器控件,我看不出你是如何搞砸的。 – BlackMael 2009-02-09 14:20:58
并非每个插件作者都会定期更新/更新其代码。我也遇到了这个问题,但后来我转而采用了经常更新的社区驱动的等价物。 – 2011-12-29 12:30:23