jQuery:如何在第三方脚本加载不同版本的 jQuery 之前保存我的 jQuery 版本?

Posted

技术标签:

【中文标题】jQuery:如何在第三方脚本加载不同版本的 jQuery 之前保存我的 jQuery 版本?【英文标题】:jQuery: How to save my version of jQuery before third party script loads different version of jQuery? 【发布时间】:2011-03-01 23:08:09 【问题描述】:

类似问题供参考: How do I run different versions of jQuery on the same page?

我有自己的 jQuery(1.4.2) 版本,定义了各种自定义函数。这个版本的 jQuery 是在第三方脚本之前加载的,第三方脚本会加载它自己的 jQuery 版本(1.4.3),当这个脚本被加载时,它会以某种方式破坏我拥有的所有自定义函数。第三方脚本在 jQuery 加载后使用 noconflict。由于没有冲突代码,我认为如果我可以先加载第三方脚本,问题就会得到解决,但是我的环境无法保证这一点,但是我可以在加载之前和/或之后运行一些自定义 javascript如果我动态加载脚本。

我想知道是否有某种方法可以保存/恢复/保护我自己的 jQuery 版本,以便在第三方脚本运行后可以访问自定义方法?

【问题讨论】:

【参考方案1】:

如果您可以在加载此脚本之前和之后运行自定义代码,我相信这会做到:

var $myJQ = jQuery.noConflict();

// Load the other script.  It should move itself away from the $ and jQuery variables
// if it properly calls noConflict.

var $ = $myJQ;

我相信会让你达到你所追求的目标。

【讨论】:

这就是我的想法,但它是否需要更像:jQuery = window.jQuery = $myJQ; $ = window.$ = jQuery; 才能更普遍适用? @Muhd - 是的,如果您的脚本需要它们,您还可以设置 window.jQuery 和 window.$ 变量。我不知道我是否认为它是必需的,但这将更多地取决于使用它的插件/脚本的结构。没有要求为 jQuery 定义 window.jQuery 来运行 - 否则 var $myJQ = jQuery.noConflict() 将无法实现任何目标。【参考方案2】:

来自http://blog.nemikor.com/2009/10/03/using-multiple-versions-of-jquery/

<!-- load jQuery 1.1.3 -->
<script type="text/javascript" src="http://code.jquery.com/jquery-1.1.3.js"></script>
<script type="text/javascript" src="jquery.dimensions.min.js"></script>

<!-- revert global jQuery and $ variables and store jQuery in a new variable -->
<script type="text/javascript">
var jQuery_1_1_3 = $.noConflict(true);
</script>

<!-- load jQuery 1.3.2 -->
<script type="text/javascript" src="http://code.jquery.com/jquery-1.3.2.js"></script>

<!-- revert global jQuery and $ variables and store jQuery in a new variable -->
<script type="text/javascript">
var jQuery_1_3_2 = $.noConflict(true);
</script>

然后

jQuery_1_1_3('<button>Use jQuery 1.1.3</button>')
    .click(function() 
        alert('Top: ' + jQuery_1_1_3(this).offset().top + '\n' +
            'jQuery: ' + jQuery_1_1_3.fn.jquery);
    )
    .appendTo('body');

【讨论】:

以上是关于jQuery:如何在第三方脚本加载不同版本的 jQuery 之前保存我的 jQuery 版本?的主要内容,如果未能解决你的问题,请参考以下文章

用jq创建出来的虚拟DOM应如何添加事件

不同版本jq冲突问题

jquery 不同版本兼容

JQ 不同引用地址

jQ如何获得网页实际高度?

JQ基础样式篇