你什么时候需要使用$(document).ready()?

我很好奇什么情况确实需要使用jquery的$(document).ready()或prototype的dom:loaded或者此事件的处理程序的任何其他变体。

在我测试的所有浏览器中,在结束标记之后立即开始与html元素和DOM进行交互是完全可以接受的。 (例如

My Div
$('#myID').initializeElement();

所以在这一点上我想知道$(document).ready()是否只是为了减少编写在页面加载期间运行的javascript代码所涉及的思路。 在使用$(document).ready()的情况下,在浏览器首先开始绘制页面和javascript实际执行页面“准备好”之间经常出现渲染问题,例如弹出和“工件”。

有没有需要$(document).ready()场景?

是否有任何理由我不应该编写初始化脚本?

主要原因是头部包含的外部文件 。 当您在包含文件时,它会立即运行。 这意味着如果JavaScript与DOM交互,则需要将其包装在Dom Ready中。

它也需要不引人注目的JavaScript和关注点的分离。 理想情况下,您的JavaScript和HTML位于不同的文件中。 如果您按照此操作,则HTML中根本不会包含任何内嵌脚本标记。

第二个是在出错时保护自己免受不明确的浏览器错误的侵害。 有些情况下,以后不会立即去操作DOM元素。 (我在看着你的IE6!)

第三个原因是保持代码清洁。

将脚本标记混合到HTML中会产生意大利面条代码。

 some HTML  some HTML  some HTML  some HTML  some HTML  some HTML  some HTML  

我们的代码差了十倍。 阅读/维护是一种正确的痛苦

在外部脚本的情况下,$(document).ready()可能是唯一的选择。 至于内联脚本,它有点不同。

根据HTML 4.01标准,无论上面显示的初始化技术是否合法,似乎有点模棱两可:

http://www.w3.org/TR/html401/interact/scripts.html#h-18.2.4

加载文档时执行的脚本可能能够动态修改文档的内容。 这样做的能力取决于脚本语言本身(例如,某些供应商支持的HTML对象模型中的“document.write”语句)。

在处理任何SCRIPT元素之前和之后,HTML文档都被约束为符合HTML DTD。

在HTML 5草案中,似乎非常清楚这种做法得到了完全支持:

http://www.w3.org/TR/html5/scripting-1.html#scripting-1

以下示例显示了如何使用脚本元素定义随后由文档的其他部分使用的函数。 它还显示了在解析文档时如何使用脚本元素来调用脚本,在这种情况下,初始化表单的输出。

  
Work out the price of your car

Base cost: £52000.

Select additional options:

Total: £

在加载DOM之后和加载页面内容之前,其中的所有内容都将加载。

$(document).ready()函数比其他使事件工作的方式有很多优点。 首先,您不必在HTML中添加任何“行为”标记

使用$(document).ready(),您可以在窗口加载之前将事件加载或触发或者您希望它们执行的操作。