如何在同一页面上获得多个版本的jQuery,其中一个版本仅用于特定的插件

时间:2012-10-14 17:52:26

标签: jquery

我在使用jQuery.noConflict(true)

时遇到问题

var jq = $.noConflict(true);

(function(jq) {
    var jq = $;
    console.log($);
})(_jQuery)

但我一直不断得到未定义的错误。是否能够帮助我将值传递给此函数,以便我可以使用jQuery?

编辑:我正在尝试在自动执行功能

中运行插件
(function($) {
console.log($); 

   (function($){

   })(jQuery)

})(jq)

问题在于函数是否经常被定义?

1 个答案:

答案 0 :(得分:2)

我想也许你打算做这样的事情,删除所有jQuery全局变量,将主jQuery全局赋值给你自己的变量jq,然后将它传递给一个自执行函数,该函数接受一个名为{{的{{ 1}}所以你可以在自执行函数中使用$作为jQuery的名称,如下所示:

$

如果你真正想做的是在同一页面上加载多个版本的jQuery,你可以阅读这篇文章:Can I use multiple versions of jQuery on the same page?

这是执行中的原则:

var jq = jQuery.noConflict(true);

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

然后,要为您的插件创建一个环境,您可以这样做:

<!-- 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减慢了页面的加载速度,消耗了更多内存并使得复杂化发展和麻烦。这没什么好处的。