JQuery - $ 未定义

2022-08-29 23:01:02

我有一个简单的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工作。我还尝试了这种变体,如和jQuery等。$(document).ready

这是.net 3.5上的MVC 2应用程序,我确信我真的很密集,谷歌上到处都说要检查文件是否正确引用,我已经检查并再次检查,请告知!:/


答案 1

该错误只能由以下三种情况之一引起:

  1. 您的 JavaScript 文件未正确加载到页面中
  2. 你有一个拙劣的jQuery版本。这可能是因为有人编辑了核心文件,或者插件可能覆盖了$ 变量。
  3. 在页面完全加载之前,以及因此,在 jQuery 完全加载之前,您需要运行 JavaScript。

首先,确保正确调用什么脚本,它应该看起来像

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

并且不应具有异步延迟的属性。

然后,您应该检查Firebug网络面板,以查看文件是否实际正确加载。如果没有,它将突出显示为红色,并在旁边显示“404”。如果文件正确加载,则意味着问题为2号。

确保所有jQuery javascript代码都在代码块中运行,例如:

$(document).ready(function () {
  //your code here
});

这将确保在初始化 jQuery 加载您的代码。

要检查的最后一件事是确保在加载jQuery之前没有加载任何插件。插件扩展了“$”对象,因此如果您在加载jQuery核心之前加载插件,那么您将收到您描述的错误。

注意:如果你正在加载不需要jQuery来运行的代码,它不需要放在jQuery就绪处理程序中。该代码可以使用 document.readyState 进行分隔。


答案 2

可能是在调用 jquery 脚本之前调用了脚本标记。

<script type="text/javascript" src="js/script.js"></script>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

这导致 $ 未定义

将jquery.js放在脚本标记之前,它将;)这样:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript" src="js/script.js"></script>