每个站点组件都包含jQuery,只有1个工作

时间:2015-01-08 22:04:23

标签: 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 required by the component
<script type="application/javascript" src="pathto/componentPlugin.js"></script>

我目前正在开发的网站在dashlet组件上非常重要,每个组件都由不同的人完成,每个组件完全独立于任何其他组件。这些组件是通过设置选项,因此可以显示或不显示它们,并在页面上以任何顺序显示。

问题是2个组件需要jQuery,目前两个都使用jquery-2.0.3 根本没有访问权限,所以添加jQuery没有选项,必须包含在每个组件中。每个组件还包括许多jQuery插件。

为了便于解释,我们将组件1“C1”和组件2“C2”称为 如果一次只有一个在页面上,则没有问题,所以问题只有在它们都显示时才会出现。

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

我不知道用户在页面上会有什么设置,但是为了测试,我知道如果我首先使用包含jQuery的C1,那么C2并注释掉jQuery的脚本标签(基本上只是制作) C1加载jQuery)工作正常。

问题在于包括jQuery在内的两个组件,并且总是会出现问题。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

var $ = Jquery尝试或更改jquery版本我建议你使用jquery 1.9

答案 1 :(得分:0)

你说很多人都在研究这些组件。每个人都必须确保代码与其他代码密切相关。所以他们必须在动态加载jquery之前包含一个检查。 例如:

if(!jQuery){
    //create jQuery-script-tag here
}

No-Conflict-Mode在这里没有解决方案,因为无论如何jQuery被定义了两次。在此模式下只删除$。

还要确保每个人都封装了这样的代码:

(function($, undefined){

    $(function(){

        // dom ready
        // do your stuff

    });

})(jQuery);