我有一个简单的jquery点击事件
<script type="text/javascript">
$(function() {
$('#post').click(function() {
alert("test");
});
});
</script>
以及在site.master中定义的jquery引用
<script src="<%=ResolveUrl("~/Scripts/jquery-1.3.2.js")%>" type="text/javascript"></script>
我已经检查了脚本被正确解析,我能够看到标记,并直接在firebug中查看脚本,所以我必须被发现。然而,我仍然得到:
$没有定义
jquery没有一个是有效的。我还尝试了它的各种变体,比如$(document)。ready和jQuery等。
这是一个。net 3.5上的MVC 2应用程序,我确信我真的很密集,谷歌上的所有地方都说要检查文件是否被正确引用,我已经检查了一遍又一遍,请建议!: /
在视图和主布局中使用脚本部分。
将视图中定义的所有脚本放在视图的scripts部分中。通过这种方式,您可以让主布局在所有其他脚本加载后加载此脚本。这是启动一个新的MVC5 web项目时的默认设置。不确定早期版本。
视图/ Foo / MyView.cshtml:
// The rest of your view code above here.
@section Scripts
{
// Either render the bundle defined with same name in BundleConfig.cs...
@Scripts.Render("~/bundles/myCustomBundle")
// ...or hard code the HTML.
<script src="URL-TO-CUSTOM-JS-FILE"></script>
<script type="text/javascript">
$(document).ready(function () {
// Do your custom javascript for this view here. Will be run after
// loading all the other scripts.
});
</script>
}
视图/共享/ _Layout.cshtml
<html>
<body>
<!-- ... Rest of your layout file here ... -->
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>
</html>
注意脚本部分是如何在主布局文件中最后呈现的。
当在asp.net中使用jQuery时,如果你正在使用一个母版页,并且你正在加载jQuery源文件,请确保在所有jQuery脚本引用之后有头部内容占位符。
我有一个问题,任何使用该母版页的页面都会返回“$ is not defined”,仅仅是因为错误的顺序使客户端代码在jquery对象创建之前运行。所以确保你有:
<head runat="server">
<script type="text/javascript" src="Scripts/jquery-VERSION#.js"></script>
<asp:ContentPlaceHolder id="Header" runat="server"></asp:ContentPlaceHolder>
</head>
这样代码将按顺序运行,并且您将能够在子页面上运行jQuery代码。