何时算是一个DOM元素“准备就绪”?

3

这可能听起来像个愚蠢的问题,而我倾向于使用:

$(document).ready(function() { }); 

但是有一个基本的问题。

假设我有一个像这样的元素列表:

<body>
  <p>Paragraph</p>
  <div>Div</div>
  <div id="HelloWorld">Hello, World</div>
  <script>
    var hw = $('#HelloWorld');
    $(document).ready(function() {
      // hw is available for me here
    });
  </script>
  <p>Another paragraph</p>
</body>

看起来div可用,我也没有遇到错误,但这样做有什么技术上的问题吗?不是说完美组织的代码,只是好奇这个技术问题。

所以我的问题是:

在浏览器读取DOM元素后,是否立即将其视为完整和可用,而不考虑其他元素是否已加载?


1
答案是肯定的。DOM是逐个元素组装的。这就是为什么经常建议将JavaScript导入放在</body>标签之前的原因。 - Pointy
1
更像是逐个闭合标签。 - Pointy
3
@NathanParker,那不准确... ready 的意思是 DOM 就绪(即文档加载完成),而不是所有图片都加载完成。 - charlietfl
如果一个div没有任何需要向服务器请求的图像或其他资源,那么是的,DOM元素甚至可以在文档完全加载之前就准备好了。 - Nathan Parker
2
@NathanParker 当DOM被解析时,.ready()被触发,而.load()则等待所有资产被加载(完全呈现页面)。 - blex
显示剩余4条评论
1个回答

4

看起来div可用,我没有遇到错误,但这样做是否存在技术问题?

没有。只要脚本在元素存在之后运行,就可以访问它。一个位于引用元素标记之后的


明白了,谢谢。我被一个奇怪的用例卡住了。 Stack Overflow 上有个很好的答案,一旦可以,我就会接受它。 - user1447679

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接