jQuery:noConflict

Dav*_*ell 21 javascript jquery

我无法解决这个问题.我的上帝让我的大脑受伤了,所以我转向你,互联网上的好人.

我一直在盯着jQuery $.noConflict()函数的文档而没有运气.

我的问题是我正在开发的网站已经包含了jQuery 1.1.3.1,但我想在一些地方做一些非常棒的时髦用户界面工作,所以我想使用1.4.2,原因很明显.

我一直试图并排运行这些,但我似乎无法获得任何代码来执行.我还需要使用1.4.2实现了几个插件,所以我不知道,如果把在jQuery的喜欢的东西$j会的工作,因为很明显,插件会拿起$jQuery作为1.1.3.1,而不是1.4.2.

有没有办法可以将我的代码包装在一个noConflict()块中,还包括我需要创建自包含1.4.2代码块的插件?

任何帮助都会很棒,因为我的可怜的头脑在API文档的广阔荒地中哭泣!

小智 27

如果你在同一个页面中有两个或三个jQuery,只需为每个不同的jQuery添加一个不同的变量.

例:

<script type="text/javascript">
    var $s = jQuery.noConflict();
    $s(document).ready(function() {
        $s('#news-container').vTicker({
            speed: 500,
            pause: 3000,
            animation: 'fade',
            mousePause: true,
            showItems: 2
        });
    });
</script>
<script type="text/javascript">
    var $j = jQuery.noConflict();
    $j(document).ready(function() {
        $j('.sf-menu ul').superfish({
            delay: 1000,
            animation: {
                opacity: 'show',
                height: 'show'
            },
            speed: 'medium',
            autoArrows: false,
            dropShadows: 'medium'
        });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

  • 在我的情况下,只是$ s解决了我的问题,我也不需要$ j.我只在一个页面上有一个WYSIWYG编辑器需要"jQuery v1.6.1",这个解决方案解决了我的冲突. (2认同)
  • 以下是我对此答案不理解的内容:脚本如何确定$ s指向哪个版本以及$ j指向哪个版本? (2认同)

SLa*_*aks 6

您只需将整个站点升级到1.4.2即可.
jQuery通常不会有很多重大变化,因此不应该这么难.

  • 我最终升级了库并重建了一些js! (4认同)
  • 我非常喜欢这样做,但我想在整个网站上进行大规模的更改,并且还要替换大量的ajax和插件.整个应用程序文件夹是1.22gb,所以你可以想象我正在处理的代码库! (2认同)
  • @DavidYell 绝对是最好的解决方案! (2认同)

j.s*_*ell 5

我最近有一个类似的问题,我在一个页面上使用jQuery v1.3.2,但第三方问卷弹出窗口在同一页面上使用旧版本.我最终设法解决了这个问题.我引用了jQuery 1.3.2如下:

 <script type="text/javascript" src"/Scripts/jquery-1.3.2.min.js"></script>
    <script type="text/javascript"> 
        jq132 = jQuery.noConflict(true); 
 </script> 
Run Code Online (Sandbox Code Playgroud)

然后我修改了我的所有jQuery代码以使用jq132而不是$.然后我在我用来替换"$("和"jq132("和"$."和"jq132"的所有插件上找到并替换.可能有更优雅的方法,但这对我有用.我远离jQuery专家,因此可能需要处理其他$语法(即不只是"."和"(").).