一个网页可以处理两个版本的jQuery吗?

时间:2012-05-21 18:32:37

标签: jquery asp.net

我正在开发一个项目,它在页面上加载了两个版本的jQuery(版本1.5.1和1.7.2)。 1.5版本用于jsTree的实现,1.7版本用于最新版本的jqGrid。

我理解下载两个版本的jQuery的性能影响以及名称冲突的可能性,但是有没有人遇到这样的情况,并且是否存在页面因此而遇到的固有问题。

目前,该网站运行良好,我没有注意到页面上不同版本的jQuery可能导致的任何重大问题。但我不能快速删除一个版本或另一个版本,因为它似乎导致一个或另一个控件(树或网格)崩溃。

我需要删除一个版本的jQuery。我正在寻找有关在页面上使用两个版本的jQuery可能遇到的潜在问题的建议以及如何去除一个引用的建议。而且,如果有人认为这两个版本都没问题,那么任何关于为什么我应该只留下足够好的想法。

提前致谢!

3 个答案:

答案 0 :(得分:3)

你绝对可以在一个网页上运行两个版本的jQuery。唯一的缺点是额外的http请求。

然而,在1.7中运行1.5代码并不是很困难。摆脱1.5,并确保1.7高于所有需要jquery的插件,看看有什么中断。发布在这里或在jQuery论坛中获取修复这些小问题的支持。

由于1.6的变化,您必须进行的最有可能的更改是将.attr()次调用更改为.prop()

编辑: 遵循Robert Harvey的建议并将jsTree升级到最新版本也是明智的。

答案 1 :(得分:2)

除了拥有多个库的开销之外,我还没有发现你遇到的任何重大问题。如果您遇到问题,jQuery.noConflict()可能会帮助您解决问题

此SO主题处理您的主题。 How do I run different versions of jQuery on the same page?

答案 2 :(得分:1)

是的它可以处理两个版本的jquery .....在第二个版本中声明一个变量为$ .noConflict(true)。并使用声明的变量代替jquery代码中使用的$。 请检查以下代码: 在声明jquery的第二个版本之后使用此代码:

<script type="text/javascript">

var jQuery_1_9_1 = $ .noConflict(true);         function pageLoad(sender,args){

        var $ddl = jQuery_1_9_1("select[name$=drpClassCode]");
        var $ddl1 = jQuery_1_9_1("select[name$=drpSubContractors]");
        $ddl.select2();
        $ddl1.select2();

        $ddl.bind("change keyup", function () {
            $ddl.fadeIn("slow");


        });

        $ddl.bind("change keyup", function () {
            $ddl1.fadeIn("slow");


        });
    }