$未定义 – asp.net MVC 4

使用下面的代码,我收到一个错误: $ is not defined 。 我的问题是:怎么可能?

 ...  $(document).ready(function () { $(function () { $('#cb').click(function () { if (this.checked) { $('div#div').slideDown(); } else { $('div#div').slideUp(); } }); }) });  @section Scripts { @Scripts.Render("~/bundles/jqueryval") } @Scripts.Render("~/Scripts/jquery-1.7.1.min.js") @Scripts.Render("~/Scripts/jquery-ui-1.8.20.min.js") 

我们可以看到,它正确加载了所有脚本:

       

怎么解决?

您已将脚本放在视图正文中,而不是在它所属的Scripts部分内部以及引用jQuery之后:

 @section Scripts { @Scripts.Render("~/Scripts/jquery-1.7.1.min.js") @Scripts.Render("~/Scripts/jquery-ui-1.8.20.min.js") @Scripts.Render("~/bundles/jqueryval")  } 

另外,为了避免引用jQuery两次(如你的情况),仔细检查你是否已经将它作为一个包已经包含在你的_Layout

最后一句话:因为默认情况下脚本包含在DOM的末尾,就在结束正文标记之前,你不需要将你的脚本包装在$(document).ready因为它执行时DOM已经加载。 你的代码更糟糕,因为你有两次。 请记住$(function() { ... }); 相当于$(document).ready(function() { ... }); 在你的情况下,当你实际上不需要其中任何一个时,你已经嵌套了其中的两个。

所以:

 @section Scripts { @Scripts.Render("~/Scripts/jquery-1.7.1.min.js") @Scripts.Render("~/Scripts/jquery-ui-1.8.20.min.js") @Scripts.Render("~/bundles/jqueryval")  } 

你不会在页面结尾之前包含jQuery JS,但是在你加入它之前你试图使用$。

你包括两次jquery。

    

第一个和最后一个js文件是相同的,除了一个是缩小的,另一个可能不是。 删除未缩小的,它应该适合您。