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


当前回答

这是解决这个问题的常见问题,你必须检查一些点

包含主要Jquery库 检查跨浏览器问题 添加库顶部的jquery代码 检查cdn可能被阻止。

详情请见本博客

其他回答

I had this problem once for no apparent reason. It was happenning locally whilst I was running through the aspnet development server. It had been working and I reverted everything to a state where it had previously been working and still it didn't work. I looked in the chrome debugger and the jquery-1.7.1.min.js had loaded without any problems. It was all very confusing. I still don't know what the problem was but closing the browser, closing the development server and then trying again sorted it out.

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

您的JavaScript文件没有正确地加载到页面中 你有一个拙劣的jQuery版本。这可能是因为有人编辑了核心文件,或者插件覆盖了$变量。 在页面完全加载之前就已经运行了JavaScript,因此,在jQuery完全加载之前就已经运行了JavaScript。

首先,确保正确调用了什么脚本,它应该是这样的

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

并且不应该有async或defer属性。

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

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

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

这将确保在jQuery初始化之后加载代码。

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

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

它可能是在jquery脚本被调用之前,你已经调用了你的script标签。

<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>

这是解决这个问题的常见问题,你必须检查一些点

包含主要Jquery库 检查跨浏览器问题 添加库顶部的jquery代码 检查cdn可能被阻止。

详情请见本博客

首先,您需要确保加载了jQuery脚本。这可能来自CDN或本地网站。如果你在尝试使用jQuery之前不先加载这个,它会告诉你jQuery没有定义。

<script src="jquery.min.js"></script>

这可能是在HEAD或页脚,只是确保你加载它之前,你试图调用任何其他jQuery的东西。

然后,您需要使用以下两种解决方案之一

(function($){
// your standard jquery code goes here with $ prefix
// best used inside a page with inline code, 
// or outside the document ready, enter code here
 })(jQuery); 

or

jQuery(document).ready(function($){
// standard on load code goes here with $ prefix
// note: the $ is setup inside the anonymous function of the ready command
});

请注意,很多时候$(document).ready(function(){//code here});不会起作用。