我想也许你打算做这样的事情来删除所有 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 会减慢页面的加载速度,消耗更多内存并使开发和故障排除复杂化. 这没什么好说的。