Jquery有一个ready
方法:
$(document).ready(function(){
// my code
})
当dom准备就绪时,它将执行我的代码。
我有一个问题,如果我把所有脚本放在</body>
之后,例如
<html>
<body>
// all kinds of html tags
</body>
<script src="/path/to/jquery.js"></script>
<script src="/path/to/all-javascript-compressed-in-one-file.js"></script>
</html>
我还需要写$(document).ready()
吗?在ready
之后dom已经</body>
了吗?
答案 0 :(得分:4)
通常,脚本会在 </body>
之前添加,而不是在之后 - 否则HTML将无法验证;正如ŠimeVidas在评论中指出的那样,<head>
或<body>
之外的任何内容都不会出现。
话虽如此,从技术上讲,DOM在那时还没有被认为准备就绪(因为浏览器仍在解析<body>
),但已经包含了正文中的所有元素。因此,可以安全地跳过$(document).ready()
。
这样做会更早地执行初始化脚本,因为在实际的DOMContentLoaded
事件被触发之前会有一些延迟。这意味着更快的页面加载和更好的用户体验。
您可能会对此related discussion感兴趣,因为它会强制执行jQuery ready
事件。
答案 1 :(得分:3)
总之,没有。当dom树可用时,dom被认为是“准备好”,如果你的javascript是页面上的最后一件事,那么它之前的所有内容都是“准备好”,因为网页是从上到下“加载”的。