好的,由于工作范围和保密性,我不能包含示例代码,但是,我会尽力解释我的情况。
每个组件的一般格式:每个格式都完全相同!
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在内的两个组件,并且总是会出现问题。
有什么想法吗?
答案 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);