【问题标题】:jQuery: How to save my version of jQuery before third party script loads different version of jQuery?jQuery:如何在第三方脚本加载不同版本的 jQuery 之前保存我的 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 版本,以便在第三方脚本运行后可以访问自定义方法?

【问题讨论】:

    标签: 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');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      相关资源
      最近更新 更多