我公司购买了一种在页面上呈现ASP.NET控件的产品。该控件使用jQuery 1.2.3并将脚本标记添加到页面以引用它。如果控件以任何方式修改(包括修改以引用其他版本的jQuery),则控件的开发人员将不支持使用该控件。
我将要开始开发自己的控件,并希望使用jQuery 1.3的功能和速度改进。这两个控件都需要存在于同一页面上。
如何允许购买的控件使用jQuery 1.2.3和新的自定义开发使用jQuery 1.3?同样出于好奇,如果我们要使用需要引用另一个版本的jQuery的附加控件怎么办?
您可以通过在无冲突模式下运行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
$
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将分别用于所需的特定于版本的功能。
jq131
重要的是, 原始开发人员使用 的 jQuery 必须 最后加载 -原始开发人员很可能在假设$()使用其jQuery版本的情况下编写了他们的代码。如果您在其版本之后加载另一个版本,$则会在您上次加载的版本中“抢占”该版本,这意味着原始开发人员的代码在最新的库版本上运行,从而呈现出noConflicts一定程度的冗余!
$()
noConflicts