我有一个简单的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插件调用在</body>旁边,并且你的脚本是在</body>之前加载的,你应该让你的代码在窗口后运行。Onload事件,像这样:
window.onload = function() {
//YOUR JQUERY CODE
}
`
因此,您的代码将只在窗口加载后运行,此时所有资产都已加载。此时,将定义jQuery($)。
如果你使用它:
$(document).ready(function () {
//YOUR JQUERY CODE
});
`
$现在还没有定义,因为它是在jQuery加载之前调用的,你的脚本在控制台的第一行就会失败。