我有一个简单的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还没有加载到页面上。使用$(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。
这个错误意味着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。
这种错误只能由以下三种情况之一引起:
您的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来分隔。