我的公司购买了一种在页面上呈现 ASP.NET 控件的产品。此控件使用 jQuery 1.2.3 并在页面中添加脚本标记以引用它。如果以任何方式修改控件(包括修改以引用不同版本的 jQuery),控件的开发人员将不支持使用该控件。
我即将开始开发自己的控件,并希望使用 jQuery 1.3 的功能和速度改进。这两个控件都需要存在于同一页面上。
如何让购买的控件使用 jQuery 1.2.3 而新的自定义开发使用 jQuery 1.3?同样出于好奇,如果我们要使用一个额外的控件来引用另一个版本的 jQuery 怎么办?
最佳答案
您可以通过在 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>
此更改意味着您要使用的任何 jQuery 内容都需要使用 jq13
而不是 $
来调用,例如
jq13("#id").hide();
让两个版本在同一个页面上运行不是一个理想的情况,但如果您别无选择,那么上述方法应该允许您同时使用两个不同的版本。
Also out of curiosity, what if we were to use an additional control that needed to reference yet another version of 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
有点多余!
关于asp.net - 如何在同一页面上运行不同版本的 jQuery?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/528241/