被jQuery弄糊涂了,当我知道的时候没有找到它'在那里
Confused by jQuery not found when I know it's there
我确保像这样验证我对jQuery的引用是正确的。
window.onload = function() {
console.log($(this));
};
我可以看到非空值。但当我尝试下面的任何一个(上面的部分被注释掉了)时,我会得到错误。
未捕获的ReferenceError:$未定义
//$(document).ready(function () { alert("ready"); });
$(window).onload(function () { alert("onload"); });
我很困惑如何定义和不同时定义它。经过一些谷歌搜索,我发现了几个这样的代码示例,据我所见,它不是文件中的语法。
标记是这样的。
<head>
...
<script src="Stuff.js" type="text/javascript"></script>
</head>
<body>
...
@Scripts.Render("~/bundles/jquery")
</body>
我在Razor下MVC.NET的默认(和工作)模板中看到,它们在头部执行@Scripts.Render("~/bundles/modernizr")
,然后在主体底部执行@Scripts.Render("~/bundles/jquery")
。我想我可以遵循同样的模式。显然,我失败了。抱歉说不清楚。由于无知导致诊断错误。
您将jQuery的script
标记放错了位置。它在您显示的代码的script
标记之后,而它应该在之前。
它可以被定义和未定义的原因是时间不同。这些对$
的引用是在非常不同的时间:
这个:
window.onload = function() {
console.log($(this));
};
当window
上的load
事件最终触发时,在页面加载周期中发生非常晚,在解析所有HTML、处理所有script
标签、加载所有图像等之后。
这些:
//$(document).ready(function () { alert("ready"); });
$(window).onload(function () { alert("onload"); });
当解析器到达它们所在的脚本块时,立即发生,并移交给JavaScript引擎,JavaScript引擎运行该代码。
所以这是可行的:
<script>
window.onload = function() {
console.log($(this));
};
</script>
<script src="jquery.js"></script>
但这失败了:
<script>
$(document).ready(funtion() {
alert("ready");
});
</script>
<script src="jquery.js"></script>
不管怎样,这都有效:
<script src="jquery.js"></script>
<script>
$(document).ready(funtion() {
alert("ready");
});
</script>
相关文章:
- EmberJS没有找到任何模型,但它'在那里
- 关于在动态创建的元素中添加预先样式化的类或在那里添加stying&然后
- 如何制作自适应块并在那里添加块
- 嘿,在那里寻找解决方案
- 如何使鼠标输入功能具有淡入淡出效果并保持在那里
- 我可以控制台.debug()并在那里制作Chrome Dev-tools断点吗?
- 转到页面并在那里打开链接,一气呵成
- 无法读取 null 的属性“addEventListener”---但 ID 在那里
- 它在那里查询轮播类似于mootools icarousel
- 从 html5 画布中删除使用 Javascript 放置在那里的图像
- Ruby on Rails - 如何将换行符输入文本区域,以便在显示内容时,换行符也在那里
- 如何修复页面顶部的导航栏并在页面滚动时将其保留在那里
- findOne 抛出未定义,即使数据在那里
- 被jQuery弄糊涂了,当我知道的时候没有找到它'在那里
- 我应该从bower_components复制文件吗?在那里引用它们
- 悬停以显示覆盖-几乎在那里,只需要一些调整
- 我需要制作一个页面,在那里你可以看到评论的开头,但必须点击'点击更多'查看评论的其余部分
- 拉斐尔将元素放在右边,并在那里缩放
- 如何播放jQuery Reel到特定帧并停在那里
- Angularjs控制器没有'socket.io事件在那里时不起作用