我有一个简单的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应用程序,我确信我真的很密集,谷歌上的所有地方都说要检查文件是否被正确引用,我已经检查了一遍又一遍,请建议!: /


当前回答

有一种方法可以让它在其余代码运行之前自动加载javascript。

进入Views\Shared_Layout.html并添加以下内容

<head>
  <*@ Omitted code*@>
  <script src="~/Scripts/jquery-1.10.2.min.js" type="text/javascript"></script>
</head>

其他回答

我也有同样的问题,没有案例能解决我的问题。唯一对我有用的,就是把它放在网站上。主文件,下一个:

<script src="<%= ResolveUrl("~/Scripts/jquery-1.7.1.min.js") %>" type="text/javascript"></script>
<script src="<%= ResolveUrl("~/Scripts/bootstrap/js/bootstrap.min.js") %>" type="text/javascript"></script>

With src="<%= ResolveUrl("")…内容页中jQuery的加载是正确的。

在视图和主布局中使用脚本部分。

将视图中定义的所有脚本放在视图的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>

注意脚本部分是如何在主布局文件中最后呈现的。

我也遇到过类似的问题。在我的c# MVC应用程序中,JQuery没有被识别出来。我需要移动@Scripts.Render("~/bundles/jquery")从底部的我的_Layout。CSHTML文件到section的头。另外,如果你正在使用visual studio,请确保你已经将Jquery作为Nuget包!

<head>
    @Scripts.Render("~/bundles/jquery")
</head>

我使用Url。知足而从不有问题。

<script src="<%= Url.Content ("~/Scripts/jquery-1.4.1.min.js") %>" type="text/javascript"></script>

这个错误意味着jQuery还没有加载到页面上。使用$(document).ready(…)或其任何变体都没有好处,因为$是jQuery函数。

使用窗口。Onload应该在这里工作。注意,只有一个函数可以分配给window.onload。为了避免丢失原始的onload逻辑,你可以像这样装饰原始函数:

originalOnload = window.onload;
window.onload = function() {
  if (originalOnload) {
    originalOnload();
  }
  // YOUR JQUERY
};

这将执行最初分配给window的函数。onload,然后执行// YOUR JQUERY。

有关装饰器模式的更多详细信息,请参阅https://en.wikipedia.org/wiki/Decorator_pattern。