我一直在靠墙撞墙一小时试图找出我的骨干代码无效的原因。我终于通过切换来实现它的工作:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello-backbonejs</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.6/underscore-min.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script>
<script src="js/application.js"></script>
</head>
<body>
</body>
</html>
要:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello-backbonejs</title>
</head>
<body>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/underscore.js/1.1.6/underscore-min.js"></script>
<script src="http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"></script>
<script src="js/application.js"></script>
</body>
</html>
基本上移动脚本包括从head
到body
。有人可以向我解释为什么这会起作用吗?
答案 0 :(得分:2)
如果您的application.js
模块处理页面的元素,那么它就是预期的行为,因为当您的脚本位于body
标记的末尾时,页面已经呈现,您可以使用其元素。
当您的脚本包含在head
元素中时,页面仍然没有呈现,但脚本将执行并尝试处理仍然不存在的元素。
因此,您必须在body
标记的末尾包含脚本,或者在window.onload
或$(document).ready
事件处理程序中开始执行。