我可以在同一页面上使用多个版本的jQuery吗?

我正在开发的一个项目需要在客户的网页上使用jQuery。 客户将插入我们将提供的一段代码,其中包含一些<script>元素,用于在<script>创建的<iframe>中构建一个窗口小部件。 如果他们还没有使用最新版本的jQuery,那么它也会包含(很可能)用于Google托管版本jQuery的<script>

问题是有些客户可能已经安装了旧版本的jQuery。 虽然这可能工作,如果它至少是一个相当新的版本,我们的代码确实依赖于jQuery库中最近推出的一些功能,所以肯定会有客户的jQuery版本太旧的情况。 我们不能要求他们升级到最新版本的jQuery。

有什么方法可以加载jQuery的新版本,仅在我们的代码的上下文中使用,不会影响或影响客户页面上的任何代码? 理想情况下,也许我们可以检查jQuery的存在,检测版本,如果它太旧,那么加载最新版本只是为了用于我们的代码。

我有一个将jQuery加载到客户域的<iframe>中的想法,该域也包含我们的<script> ,这似乎是可行的,但我希望有一种更优雅的方式来实现它(更不用说没有额外的<iframe>的性能和复杂性惩罚)。


是的,由于jQuery的noconflict模式,它是可行的。 http://blog.nemikor.com/2009/10/03/using-multiple-versions-of-jquery/

<!-- load jQuery 1.1.3 -->
<script type="text/javascript" src="http://example.com/jquery-1.1.3.js"></script>
<script type="text/javascript">
var jQuery_1_1_3 = $.noConflict(true);
</script>

<!-- load jQuery 1.3.2 -->
<script type="text/javascript" src="http://example.com/jquery-1.3.2.js"></script>
<script type="text/javascript">
var jQuery_1_3_2 = $.noConflict(true);
</script>

然后,而不是$('#selector').function(); ,你会做jQuery_1_3_2('#selector').function(); 或者jQuery_1_1_3('#selector').function();


看了这个并试用后,我发现它实际上不允许同时运行多个jquery实例。 经过四处搜寻后,我发现这只是个窍门,而且代码少了很多。

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" type="text/javascript"></script>
    <script>var $j = jQuery.noConflict(true);</script>
    <script>
      $(document).ready(function(){
       console.log($().jquery); // This prints v1.4.2
       console.log($j().jquery); // This prints v1.9.1
      });
   </script>

因此,在“$”之后添加“j”是我需要做的。

$j(function () {
        $j('.button-pro').on('click', function () {
            var el = $('#cnt' + this.id.replace('btn', ''));
            $j('#contentnew > div').not(el).animate({
                height: "toggle",
                opacity: "toggle"
            }, 100).hide();
            el.toggle();
        });
    });

取自http://forum.jquery.com/topic/multiple-versions-of-jquery-on-the-same-page:

  • 原始页面加载他的“jquery.versionX.js” - $jQuery属于versionX。
  • 你可以调用你的“jquery.versionY.js” - 现在$jQuery属于versionY,并且_$_jQuery属于versionX。
  • my_jQuery = jQuery.noConflict(true); - 现在$jQuery属于versionX, _$_jQuery可能为null, my_jQuery为versionY。
  • 链接地址: http://www.djcxy.com/p/74357.html

    上一篇: Can I use multiple versions of jQuery on the same page?

    下一篇: How do I load a JSON object from a file with ajax?