如何在同一页面上使用一个版本为特定插件获取多个版本的jQuery

如何在同一页面上使用一个版本为特定插件获取多个版本的jQuery,jquery,Jquery,我在使用jQuery.noConflict(true) var jq=$.noConflict(true) 但我不断地得到错误,它是未定义的。有什么能帮我传递一个值给这个函数,这样我就可以使用jQuery了吗 编辑:我正在尝试在自动执行函数中运行插件 (function($) { console.log($); (function($){ })(jQuery) })(jq) 问题是函数一直没有定义?我想您可能是想这样做,删除所有jQuery全局变量,将主jQuery全局变量

我在使用jQuery.noConflict(true)

var jq=$.noConflict(true)

但我不断地得到错误,它是未定义的。有什么能帮我传递一个值给这个函数,这样我就可以使用jQuery了吗

编辑:我正在尝试在自动执行函数中运行插件

(function($) {
console.log($); 

   (function($){

   })(jQuery)

})(jq)

问题是函数一直没有定义?

我想您可能是想这样做,删除所有jQuery全局变量,将主jQuery全局变量分配给您自己的变量
jq
,然后将其传递给一个自执行函数,该函数接受一个名为
$
的参数,这样您就可以在自执行函数内部使用
$
作为jQuery的名称,如下所示:

var jq = jQuery.noConflict(true);

(function($) {
    console.log($);
})(jq);
如果您真正想做的是在同一页面上加载多个版本的jQuery,那么您可以阅读以下文章:

以下是执行中的原则:

<!-- 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>

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

如果这是我的项目,我会花一些精力来弄清楚如何让我所有的代码都使用同一版本的jQuery,因为多个版本的jQuery会减慢页面的加载速度,消耗更多内存,并使开发和故障排除变得复杂。它没有什么好处。

因为代码没有意义,所以您实际上想要完成什么。从全局空间中删除所有jQuery变量,并将主jQuery名称分配给
jq
,但不使用该变量。你试着使用
\u jQuery
$
,这两者都不应该被定义。当你使用
noConflict(true)
时,他们会将它重新分配给
\u jQuery
-基本上我是在尝试使用
noConflict
,然后在一个自执行函数中使用它?正如@jfriend00所述,你真的应该把精力集中在让所有插件都使用最新(和单一)版本的jQuery上。嘿,谢谢堆-我也在尝试使用这个插件,一直给我未定义的?i、 比如
(function($){console.log($);(function($){})(jQuery)})(jq)
你为什么要做
noConflict(true)
?插件可能依赖于您正在删除的
jQuery
定义。是的,那么如何修复它,使插件在noConflict中工作?i、 问题是我正在另一个页面上加载这个,旧版本的jQuery正在运行?是的,但这个问题不能帮助我理解如何解决上述问题?@Andy-我已经用那篇文章的信息扩展了我的答案。这应该告诉你怎么做。就我个人而言,我会努力为插件找到修复程序,使其与页面其余部分使用相同版本的jQuery运行,因为加载多个版本的jQuery(性能、加载时间、内存消耗、问题排除等)确实是不可取的。
<!-- 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>

<!-- load jQuery 1.8.2 -->
<script type="text/javascript" src="http://example.com/jquery-1.8.2.js"></script>
<script type="text/javascript">
var jQuery_1_8_2 = $.noConflict(true);
</script>
(function(jQuery) {
    var $ = jQuery;
    // now both jQuery and $ refer to version jQuery 1.3.2 inside this closure
    // use your plugin that requires 1.3.2 here
})(jQuery_1_3_2);