Javascript 每个站点组件都包含jQuery,只有1个可用

Javascript 每个站点组件都包含jQuery,只有1个可用,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,好的,由于工作范围和保密性,我不能包括示例代码,但是,我会尽我所能解释我的情况 每个组件的通用格式:每个组件的格式完全相同 CSS tags - never any problems here HTML - main html for the component <script type="application/javascript" src="pathto/jquery-2.0.3.min.js"></script> Other jQuery plugins requ

好的,由于工作范围和保密性,我不能包括示例代码,但是,我会尽我所能解释我的情况

每个组件的通用格式:每个组件的格式完全相同

CSS tags - never any problems here
HTML - main html for the component
<script type="application/javascript" src="pathto/jquery-2.0.3.min.js"></script>
Other jQuery plugins required by the component
<script type="application/javascript" src="pathto/componentPlugin.js"></script>
CSS标签-这里没有任何问题
HTML-组件的主HTML
组件所需的其他jQuery插件
我目前工作的站点是dashlet组件的大型站点,每个组件由不同的人完成,每个组件完全独立于任何其他组件。这些组件是通过设置的选项,因此它们可以显示或不显示,并在页面上以任意顺序显示

问题是其中两个组件需要jQuery,目前都在使用jQuery-2.0.3 根本没有对头部的访问权限,因此添加jQuery没有选项,必须包含在每个组件中。每个组件还包括许多jQuery插件

为了便于解释,我们将组件1称为“C1”,组件2称为“C2” 如果一次只有其中一个在页面上,则不存在任何问题,因此只有当它们都显示时才会出现问题

确切的错误取决于组件的顺序,但主要前提是总会有一些插件未定义,有时,$未定义或$.fn未定义

我不知道用户在页面上会有什么,因为它在那里设置,但是为了测试,我知道如果我先有C1,包括jQuery,然后是C2并注释掉jQuery的脚本标记(基本上只使C1加载jQuery),一切正常

包括jQuery在内的两个组件都有问题,而且总是有一些东西出现故障


有什么想法吗?

var$=Jquery

尝试上述解决方案或更改jQuery版本


我建议您使用jQuery 1.9版,您说过很多人都在开发这些组件。每个人都必须确保没有代码与其他代码交互。因此,在动态加载jquery之前,它们必须包含一个检查。 例如:

if(!jQuery){
    //create jQuery-script-tag here
}
这里没有冲突模式是没有解决方案的,因为jQuery定义了两次。在此模式下,仅删除$

还要确保每个人都封装了如下代码:

(function($, undefined){

    $(function(){

        // dom ready
        // do your stuff

    });

})(jQuery);

您可以使用$.noConflict:创建一个依赖关系系统,该系统首先加载依赖关系,并且只有在我尝试过$.noConflict后才加载。有时,$未定义,这会导致新的问题。@Kronox这意味着noConflict没有被正确使用。我只能访问组件的2个文件。。主html文件和插件文件。无法访问后端或主系统文件。。因此,依赖关系系统不能(或者我会)通过将其全部封装在IIFEI use中来使用$:(函数($,未定义){})(jQuery);另外,我尝试了这两种方法,只是把所有的代码都包装在iLife中。。还是没有变化。UncaughtTypeError:undefined不是一个函数(这是第一个组件插件调用),IIFE不会做任何工作。封装代码很好。您只需加载一个jQuery。这是你问题的根源。有很多lib可以为youTried动态加载lib,这会导致更多插件失败。而且该公司要求我们使用2.0.3