什么时候应该使用$(document).ready?

时间:2010-06-23 16:38:36

标签: javascript jquery dom

我注意到$(document).ready(..)会导致应用javascript效果的显着延迟。但是我也明白,只是在<script>中产生效果并不总是有效,因为DOM可能还没准备好。

您应该何时将代码放在$(document).ready中,何时可以将其添加到全局<script>代码中?

4 个答案:

答案 0 :(得分:3)

当你应该和不应该使用它时,没有固定的规则。答案在于您的代码是否需要遍历在执行时不存在的DOM部分。如果需要按ID查找元素,可以使用它在代码执行之前构建DOM。如果您不关心DOM,那么您不需要使用它。

另一种方法是将脚本标记移动到body标记的底部,以便在加载DOM后执行它们。这样做没有什么主要的优点/缺点,但是它确实使得保持代码组织变得更加困难,同时使用$(document).ready()允许你将javascript保持在页面的头部,即使它需要最后执行。

答案 1 :(得分:2)

当代码需要元素准备就绪时,请使用$(document).ready(func),或仅使用$(func),例如使用选择器,与当时搞乱元素有关的任何事情

当代码不需要元素时......例如。定义(不使用,定义)插件,不要将其包装在任何内容中。

当您需要加载/准备好图片时,请改用$(window).load(func)

答案 2 :(得分:0)

如果您要处理DOM(即在任何标记或元素上),请确保DOM已准备就绪。如果这会导致您的延迟,请考虑制作更简单/更小的页面,以便加载更快。简单的$(document).ready()函数通常在页面可视化呈现之前完成。

答案 3 :(得分:0)

如果我没弄错,$(document).ready(..)函数应该在DOMContentLoaded上运行,而不是等到Load事件被引发:

http://api.jquery.com/ready/

另一方面,$(文档).load(..)将在呈现DOM时执行,并且所有资产都被加载,如果您依赖页面上的资产属性(例如,图像尺寸)。

$(document).load(..)功能是您网页上的<script>标记,还是位于网页引用的外部JS文件中?在后一种情况下,延迟可能部分是由于脚本解析。

您是否尝试在页面底部放置一个全局<script>标记,并在两种不同的方案中运行它 - 一次仅使用其中的$(document).load(..)函数,再次使用其中的内容而是在脚本标记中加载函数。这两种情况之间的JS效果是否存在显着差异?