是否可以在同一页面上使用2个版本的jQuery?

Ben*_*ack 11 javascript jquery

注意:我知道在这里这里已经提出类似的问题,但我正在寻找关于如何完成这项工作或完全避免它的充分理由的补充说明.

我正在为已经使用旧版jQuery库(1.1.3.1)的现有网站添加功能.我一直在针对最新版本的jQuery库(1.4.2)编写我的附加功能.我只使用较新版本的jQuery测试了网站,它打破了功能,所以现在我正在考虑在同一页面上使用这两个版本.这怎么可能?

在我的代码中我需要做什么来指定我使用的是一个版本的jQuery而不是另一个版本?例如,我将把<script>jQuery的两个版本的标签放在我页面的标题中,但是我需要做什么才能确保在我的调用代码中我确实调用了一个版本的库或另一个版本?

也许是这样的:

//Put some code here to specify a variable that will be using the newer
//version of jquery:
var $NEW = jQuery.theNewestVersion();

//Now when I use $NEW, I'll know it's the newest version and won't
//conflict with the older version.
$NEW('#personName').text('Ben');

//And when I use the original $ in code, or simply 'jquery', I'll know
//it's the older version.
$('#personName').doSomethingWithTheOlderVersion();
Run Code Online (Sandbox Code Playgroud)

更新:在阅读了一些答案之后,我开始怀疑尝试玩这个游戏是不是一个好主意......

End*_*ssa 24

您可以使用jQuery noConflict方法来实现此目的.

<script type="text/javascript" src="jquery-1.1.3.js"></script>
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script type="text/javascript">
    //Here, $ refers to the most recent jquery script loaded, which is version 1.4.2.
    $.noConflict();

    //Here, jQuery refers to 1.4.2 and $ refers to 1.1.3
    //You can setup an alias like so:
    var $NEW = jQuery;

    //Now, you can use old jQuery with $ and new jQuery with $NEW.
</script>
Run Code Online (Sandbox Code Playgroud)


bob*_*nce 7

有可能?是的,就像运行jQuery和另一个同时使用该名称的框架$一样.包含一个jQuery副本并使用它将其分配给新名称noConflict,然后对另一个副本执行相同操作.

一个好主意?真的没有,就像同时运行jQuery和另一个框架不是一个好主意一样,只是更多.jQuery是一个影响深远的入侵框架.如果jQuery的两个实例开始改变相同的元素(并且1.4之前的jQuery版本对于它们触摸的元素非常混杂),它们可能会混淆彼此的不可预测,时间敏感和不可判断的副作用.

如果可能的话,更新所有代码以在最新的jQuery下运行是迄今为止更好的途径.这真的不应该那么困难; jQuery开发人员并没有破坏很多代码应该首先依赖的代码.