我应该使用window.load还是document.ready jQuery?

14

最近我看到你可以使用

$('document').ready(function() {
//Do Code
});
或者
$('window').load(function() {
//Do Code
});

针对jQuery而言。

然而,它们对我来说似乎是相同的!但显然并不是。

所以我的问题是:对于一个基于动画和异步的网站,我应该使用哪一个?而且这两个中哪一个通常更好使用?

谢谢。


你想用它来做什么?通常的答案是“都不需要”。你是否在做一些需要使用load而不是ready的事情? - James Montagne
可能是window.onload vs document.ready的重复问题。 - pimvdb
@pimvdb 这是jQuery,所以不是重复。 - H Bellamy
@H Bellamy:那个也是。 - pimvdb
2个回答

31

$('document').ready 会在DOM准备好时运行代码,但不会在页面加载完毕时运行,也就是说,在网站还没有被绘制且像图片这样的内容还没有被加载。

$(window).load 会在页面被绘制且所有内容都被加载后运行代码。当您需要获取图像大小时,这将非常有用。如果图像没有样式或宽度/高度,除非使用 $(window).load,否则无法获取其大小。


7

首先,您可能希望考虑使用“ready”事件,可以像这样处理它:

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

或者更加简洁和通俗易懂地说:
$(function() {
  ...
});

"load"处理程序确实涉及到实际事件,并且可以在多种不同类型的元素上处理:例如<img><iframe>。文档或窗口级别的"load"事件发生在页面的所有资源加载完成时。然而,在某些浏览器中合成的"ready"事件发生在页面DOM准备好但可能在像<img>内容之前。

另一种选择是将<script>标签放置在<body>末尾甚至在<body>之后。这样脚本就可以使用整个DOM,但您无需担心任何事件处理即可知道。


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