当前位置:  开发笔记 > 编程语言 > 正文

如何在同一页面上运行不同版本的jQuery?

如何解决《如何在同一页面上运行不同版本的jQuery?》经验,为你挑选了2个好方法。

我的公司购买了一个在页面上呈现ASP.NET控件的产品.此控件使用jQuery 1.2.3并向页面添加脚本标记以引用它.如果以任何方式修改控件(包括修改引用不同版本的jQuery),控件的开发人员将不支持使用该控件.

我即将开始开发自己的控件,并希望使用jQuery 1.3的功能和速度改进.这两个控件都需要存在于同一页面上.

如何让购买的控件使用jQuery 1.2.3和新的自定义开发来使用jQuery 1.3?出于好奇,如果我们使用另外一个需要引用另一个版本的jQuery的控件怎么办?



1> ConroyP..:

您可以通过在无冲突模式下运行您的jQuery版本来实现此目的."没有冲突"模式是让jQuery在其他框架(如原型)上运行的典型解决方案,也可以在这里使用,因为它本质上是你加载的每个jQuery版本的命名空间.






这个改变意味着你想要使用的任何jQuery东西都需要使用jq13而不是$,例如

jq13("#id").hide();

让两个版本在同一页面上运行并不理想,但如果你别无选择,那么上面的方法应该允许你一次使用两个不同的版本.

出于好奇,如果我们使用另外一个需要引用另一个版本的jQuery的控件怎么办?

如果你需要添加另一个版本的jQuery,你可以扩展上面的内容:








变量jq13jq131将各自用于您所需要的特定版本的功能.

重要的是原始开发人员使用jQuery最后加载 - 原始开发人员可能$()在使用他们的jQuery版本的假设下编写他们的代码.如果你在他们之后加载另一个版本,那么你将加载$最后一个版本"抓住",这意味着原始开发人员的代码在最新的库版本上运行,这noConflicts有点多余!


订购真的很重要吗?noConflict函数的重点不是将"$"变量返回给原始所有者吗?订购不应该很重要.但重要的是,在加载应该进入非冲突模式的jQuery版本之后,jQuery.noConflict被立即调用**.
mtyaka完全正确.如果传入'true'参数,则无需担心加载脚本的顺序.将'true'传递给noconflict会将'jQuery'变量和'$'变量恢复为原样.没有它,只恢复'$'.

2> Tigran Tokma..:

正如所说的ConroyP你可以这样做jQuery.noConflict但不要忘记var在声明变量时.像这样.






您可以通过在函数后添加(jq13)将所有$连接到jq13 }).像这样

(function($) {
 ... 
})(jq13); 


没有var在这里不是什么大问题.没有var定义的变量具有全局范围.你想要**jq13对象具有全局范围.
隐式全局变量是糟糕的编码实践.如果您确定需要全局变量,则应使用var关键字在全局范围内声明它,或者,如果在函数内部,则手动将变量附加到窗口对象.请参阅http://javascript.crockford.com/code.html#variable%20declarations
推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有