在我的html页面中,我需要将jquery放两次。如果我把他们中的任何人带出我的页面,那么页面就不会被渲染。请注意,包含的“jquery”都指向同一位置。
我正在使用backbone.js。我添加了require.js以在页面底部包含jquery。另外,我需要在页面的开头添加jquery。一旦我添加这两个,然后我的整个页面正确呈现。如果我把它们中的任何一个拿走,我就开始遇到问题。
有人可以说明为什么会出现这个问题。
在页面的HEAD
标记中添加了脚本:
<script src="../vendors/jquery/dist/jquery.min.js"></script>
在BODY
底部添加了脚本:
<script type="text/javascript">
require(['common'],function()
{
require(['jquery', 'fastclick','nprogress','charts','underscore'],function()
{
require(['firstDashboardController']);
});
});
</script>
如果我把下面页面顶部的jquery包含在我得到的错误中:
如果我从底部的require模块中取出jquery,则下面是错误:
P.S:我正在使用chart.js一个外部文件在页面上绘制图形和内容。
答案 0 :(得分:1)
jQuery使用全局函数注册自己&#34; $&#34;和&#34; jQuery&#34;,即使与RequireJS一起使用。如果要关闭此行为,则必须调用noConflict函数,您可能需要
define('jquery-require', ['jquery'], function (jq) {
return jq.noConflict(true);
});
require(['jquery-require'], function(jq) {
console.log(jq); // working
console.log($); // undefined
console.log(jQuery); // undefined
});
答案 1 :(得分:1)
这个问题的一个常见解决方案是使用jQuery的内置$.noConflict(true)
,但我建议你在底部<script>
标记代码中使用以下代码来防止jQuery的双重加载:
requirejs.config({
paths: {
jquery: '../vendors/jquery/dist/jquery.min.js'
}
});
if (typeof jQuery === 'function') {
//jQuery already loaded, just use that
define('jquery', function() { return jQuery; });
}
require(["jquery"], function($) {
//This $ should be from the first jquery tag, and no
//double load.
});
来源:https://github.com/requirejs/requirejs/issues/535
删除一个包含将无效,因为:
<script>
标签)<script src="jQuery.min.js">
标签加载的jQuery(底部标记)