0

我在使用时遇到问题jQuery.noConflict(true)

var jq = $.noConflict(true);

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

但我不断收到未定义的错误。有什么东西可以帮助我将值传递给这个函数,以便我可以使用 jQuery 吗?

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

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

   (function($){

   })(jQuery)

})(jq)

问题是函数不断地变得未定义?

4

1 回答 1

2

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

var jq = jQuery.noConflict(true);

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

如果您真正想做的是在同一页面上加载多个版本的 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);

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

于 2012-10-14T17:56:55.390 回答