Javascript jQuery noConflict()问题

Javascript jQuery noConflict()问题,javascript,jquery,firefox,internet-explorer-8,Javascript,Jquery,Firefox,Internet Explorer 8,因此,我正在开发一个平台,该平台在每次加载页面时都注入jQuery-1.2.6。我开发页面是为了使用jQuery-1.4.2,因此当我的页面加载时,页面上有两个jQuery实例 为了避免任何冲突,我在页面之外的JS文件中包含了以下行: var mc$ = jQuery.noConflict(); jQuery(function($) 如果我在最初使用$的地方使用mc$,一切似乎都正常 我在Firebug和IE中遇到一个错误,我不知道如何解决 在“我的页面”加载时注入到平台上的文件中,开发人员执

因此,我正在开发一个平台,该平台在每次加载页面时都注入jQuery-1.2.6。我开发页面是为了使用jQuery-1.4.2,因此当我的页面加载时,页面上有两个jQuery实例

为了避免任何冲突,我在页面之外的JS文件中包含了以下行:

var mc$ = jQuery.noConflict();
jQuery(function($)
如果我在最初使用$的地方使用mc$,一切似乎都正常

我在Firebug和IE中遇到一个错误,我不知道如何解决

在“我的页面”加载时注入到平台上的文件中,开发人员执行了以下操作:

 $(document).ready(function() {
Firebug中的错误状态为:“$不是函数”

此错误仅在我更改以下内容后才开始出现:

var mc$ = jQuery.noConflict();
我认为,通过创建mc$变量,开发人员的$(文档)出现了问题。。。呼叫如果是这样,我不知道如何解决这个问题,如果不是,我希望有一个解决方案,我可以把功能提供回开发人员的注入文件


谢谢

根本原因是将两个jQuery实例加载到一个页面中。听上去,jQuery的原始实例(1.2.6)也与全局$variable解除了绑定

通过查看,您可以尝试为jQuery.noConflict()调用提供一个附加参数,以表示卸载jQuery,因为您的1.4.2实例似乎是在1.2.6之前加载的


除此之外,如果不测试确切的场景,我不知道还能提供什么帮助:)

您可能会发现这个答案很有用:

您的
部分中的呼叫顺序必须是下一个:

  • jQuery库№1;
  • 没有冲突
  • jQuery库№二,
  • .noConflict()
    可以如下所示:

    <script type="text/javascript">var mc$ = jQuery.noConflict();</script>
    

    .noConflict()
    是为了与其他JavaScript库/框架兼容,同一页面中的多个jQuery实例(sans
    .sub()
    在1.6+中)不受任何支持。@Nick Craver the
    noConflict()
    不同意您的观点。它特别提到传递
    true
    作为一个参数来消除
    jQuery
    符号之间的冲突。@lawnsea-这是特别的(并且限制在这一点上)到1.6+(我上面提到的例外)。请注意,即使这样,您仍然会遇到许多问题,例如,插件是在
    jQuery
    对象上定义的,许多事件处理程序(可能)也是如此,等等,这取决于jQuery或它们的插件。这来自于解决这些问题的经验……记住,如果没有插件等,那么首先就没有理由保留旧版本。@Nick-请接受我的道歉。我做了我应该早些时候做的尽职调查,并回顾了jQuery文档历史,发现您完全正确。我会把虚假的选票捐给一个好的事业。显然我做得不对,因为通过设置
    jQuery.noConflict(true)我的一些插件坏了。感谢大家迄今为止的投入。@Mark不幸的是,这是意料之中的。大多数(如果不是全部的话)jQuery插件依赖于“jQuery”关键字进行初始化,因此使用
    var mc$=jQuery.noConflict(true)
    会导致它们中断。使用上述场景,您可能需要检查插件并替换
    }(jQuery)}(mc$)的code>变量
    mc$('#container').height();