我一直收到一条说明jQuery not found
的错误。通常这是由于jquery在需要之前没有加载。但是,当我查看调试器时,首先会加载jquery。为了不首先加载jquery,我可能会缺少什么?
相关捆绑
bundles.Add(new ScriptBundle("~/bundles/jquery")
.Include("~/Scripts/jquery-{version}.js")
.Include("~/Scripts/knockout-{version}.js")
.Include("~/Scripts/moment.js")
);
bundles.Add(new ScriptBundle("~/bundles/kendo")
.Include("~/Scripts/kendo/2013.3.1316/kendo.all.min.js")
.Include("~/Scripts/kendo/2013.3.1316/kendo.aspnetmvc.min.js")
);
关闭</body>
之前_Layout.cshtml页面
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/kendo")
页面来源信息
<script src="/Scripts/jquery-1.9.1.js"></script>
<script src="/Scripts/knockout-3.0.0.debug.js"></script>
<script src="/Scripts/moment.js"></script>
<script src="/Scripts/kendo/2013.3.1316/kendo.all.min.js"></script>
<script src="/Scripts/kendo/2013.3.1316/kendo.aspnetmvc.min.js"></script>
<script src="/Scripts/bootstrap.js"></script>
<script src="/Scripts/respond.js"></script>
如果我将@Scripts.Render("~/bundles/jquery")
移动到它工作的标题,我找到了一个解决方案。
答案 0 :(得分:0)
为了将来参考,jQuery需要在头文件中的原因是MVC帮助程序直接在widget元素下面注入<script>
标记。
<script>jQuery(function(){ //widget init code here })</script>
因为jQuery被加载到body
标记之下,所以在加载jQuery之前,小部件代码(如上所述)正在执行,因此出现错误。您还可以使用Widget.Defer()
旁边的Kendo.WriteScripts()
功能来解决此问题,该功能允许您将脚本标记推迟到jQuery脚本标记之后