【问题标题】:Is it possible to copy all plugins from one version of the jQuery object to another?是否可以将所有插件从一个版本的 jQuery 对象复制到另一个版本?
【发布时间】:2016-09-02 16:21:16
【问题描述】:

我正在开发一个依赖于大量 jQuery 1.9.1 功能的页面,而该站点本身依赖于 jQuery 1.7.1。首先加载 1.7.1,然后所有插件都针对它执行。在添加任何插件脚本 1.9.1 并分配给带有$.noConflict(true) 的变量之后的某些页面上。问题是我需要从 1.9.1 对象访问 jQuery UI 和其他一些杂项插件。

是否有一些常见的插件参数或者我可以从第二个版本中引用的东西?可能是jQuery191.plugins = $.plugins 之类的东西?还是我必须在 noConflict 之前重新加载 jQuery 插件文件?

【问题讨论】:

    标签: jquery jquery-ui jquery-plugins


    【解决方案1】:

    我确信这是不言而喻的,但理想情况下更新站点以使用单个最新版本的 jQuery,这样就可以解决这个问题。

    但是,您的问题的答案是否定的,您不能复制它们 - 至少,不能使用正确编写的插件。正确编写的插件的高级结构是这样的:

    (function($) {
        // Do things with $ here, such as registering a plugin function:
        $.fn.thePlugin = function() {
            // ...and presumably here as well...
        };
    })(jQuery);
    

    这意味着插件在加载插件时引用了控制jQuery符号的jQuery版本。

    稍后,在加载不同版本的 jQuery 之后,您可能会想这样做:

    jQuery.fn.thePlugin = oldJQuery.fn.thePlugin;
    

    ...但是您会在 jQuery 版本之间产生可怕的串扰:该插件将由较新的 jQuery 调用,但在执行此操作时使用较旧的 jQuery。

    现在,我上面的greenPlugin 发生了这种情况

    因此,在您可以清理之前,您必须重复加载插件:

    <script src="jquery-1.7.1.js"></script>
    <script src="this-plugin.js"></script>
    <script src="that-plugin.js"></script>
    <script src="the-other-plugin.js"></script>
    <script>
    var jq171 = jQuery.noConflict(); // With or without `true`
    </script>
    <script src="jquery-1.9.1.js"></script>
    <script src="this-plugin.js"></script>
    <script src="that-plugin.js"></script>
    <script src="the-other-plugin.js"></script>
    

    ...这显然是丑陋的。 :-) 但是脚本可能至少第二次来自缓存。这意味着通过jq171 访问的jQuery 版本和通过jQuery/$ 访问的jQuery 版本都具有所有三个插件。

    【讨论】:

    • 如果你要显示两个版本的 jQuery 的加载,你真的需要显示 .noConflict() 语句。
    • @jfriend00:嗯,从技术上讲,示例不需要它们,但是是的,我可能应该。 编辑: 所以我有。 :-)
    • 感谢您提供的信息。我刚刚实现了文件捆绑,我不想处理拆分捆绑,所以我只是要升级并希望最好。有什么地方可以查找可能的升级冲突吗?
    • @Marie:他们通常会在 jQuery 网站上很好地标记它们——博客、版本公告、API 文档等。
    猜你喜欢
    • 1970-01-01
    • 2018-08-02
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 2011-03-26
    相关资源
    最近更新 更多