121

我在stackoverflow中看到了这个问题,但觉得根本没有答案。

$(document).ready必要吗?

我在页面底部链接了我所有的 javascript,所以理论上它们都在文档准备好之后运行。

4

5 回答 5

136

$(document).ready必要吗?

如果您将所有脚本都放在</body>结束标记之前,那么您所做的就是完全相同的事情。

此外,如果脚本不需要访问 DOM,那么除了可能依赖于其他脚本之外,它在哪里加载都无关紧要。

对于许多 CMS,您没有太多选择脚本加载位置的选择,因此模块化代码使用document.ready事件是一种很好的形式。如果你在别处重用旧代码,你真的想回去调试它吗?

题外话:

作为旁注:您应该使用jQuery(function($){...});而不是$(document).ready(function(){...});因为它强制别名为$.

于 2011-01-10T05:47:34.337 回答
25

不,如果您的 javascript 是关闭前的最后一件事,您将不需要添加这些标签。

作为旁注,$(document).ready 的简写是下面的代码。

$(function() {
// do something on document ready
});

这个问题可能很好。你读过它吗? jQuery:如果页面底部有外部 JS,为什么要使用 document.ready?

于 2011-01-10T05:47:54.557 回答
4

不,如果您知道您没有发生任何延迟的事情,则没有必要 - 而且在大多数情况下,您会知道您是否已经从上到下开发了您正在处理的内容。

——当你引入别人的代码时,没有彻底审计它,你不知道。

所以,问问你自己,你是否使用了可以帮助你处理结构的框架或编辑器?您是否引入了其他人的代码并且您没有费心阅读每个文件?您准备好通过操作系统、浏览器和浏览器版本矩阵来测试您的代码了吗?您是否需要从代码中榨取每一盎司的速度?

document.ready() 使许多问题变得无关紧要。document.ready() 旨在让您的生活更轻松。它对性能的影响很小(我敢说可以接受)。

于 2013-03-19T14:13:25.160 回答
1

我在互联网上看到了关于 jquery 的使用的参考资料/博客文章document.ready。在我看来,使用它或将所有 javascript 放在页面底部都是有效的。现在的问题是哪个会更好?这只是编程风格的问题。

于 2011-01-10T05:48:46.693 回答
0

不,没有必要。您可以将脚本标记放在正文结束标记之前,或者如果您支持 IE9+,则可以使用本机 JS。

<script>alert('DOM Loaded!');</script>
</body>

<script>
document.addEventListener("DOMContentLoaded", function(event) { 
      // DOM has loaded ready to fire JS scripts
    });
</script>
于 2018-10-05T15:34:47.983 回答