我在stackoverflow中看到了这个问题,但感觉它根本没有得到回答。
$(document).ready
是否必要?
我将所有的javascripts链接到页面底部,所以理论上它们都是在文档准备就绪后全部运行的。
答案 0 :(得分:118)
$(document).ready
是否必要?
如果您已将所有脚本放在</body>
结束标记之前,那么您已完成相同的操作。
此外,如果脚本不需要访问DOM,那么除了可能依赖于其他脚本之外,它的加载位置也无关紧要。
对于许多CMS,您没有太多选择加载脚本的位置,因此模块化代码使用document.ready
事件是一种很好的形式。如果你在其他地方重复使用它,你真的想回去调试旧代码吗?
作为旁注:您应该使用jQuery(function($){...});
代替$(document).ready(function(){...});
,因为它会强制别名为$
。
答案 1 :(得分:22)
不,如果你的javascript是关闭前的最后一件事,你就不需要添加这些标签了。
作为附注,$(document).ready的简写是下面的代码。
$(function() {
// do something on document ready
});
这个问题可能不错。你读过它吗? jQuery: Why use document.ready if external JS at bottom of page?
答案 2 :(得分:4)
不,如果您知道没有任何延期的事情发生,则没有必要 - 在大多数情况下,您将知道您是否从上到下开发了您正在进行的工作。
- 当你带来别人的代码而没有彻底审核时,你不知道。
那么,问问自己,您是否在使用可以帮助您构建结构的框架或编辑器?您是否引入了其他人的代码并且您没有费心阅读每个文件?您是否准备好通过测试代码的操作系统,浏览器和浏览器版本矩阵?您是否需要从代码中挤出每一盎司的速度?
document.ready()使许多问题变得无关紧要。 document.ready()旨在让您的生活更轻松。它出现在一个小的(我敢说可接受的)性能上。
答案 3 :(得分:1)
我在互联网上看过有关jquery document.ready
用法的参考/博客文章。在我看来,使用它或将所有的javascript放在页面底部都是有效的。现在问题是哪个更好?这只是编程风格的问题。
答案 4 :(得分:0)
否,没有必要。您可以将script标签放在正文关闭标签之前,或者如果您支持IE9 +,则可以使用本机JS。
<script>alert('DOM Loaded!');</script>
</body>
<script>
document.addEventListener("DOMContentLoaded", function(event) {
// DOM has loaded ready to fire JS scripts
});
</script>