我知道,在jQuery中,我们被告知要使用$(document).ready()
以确保DOM元素已准备好进行交互。我知道如果脚本标签在<head>
中,这肯定适用。如果它们位于<body>
的末尾,在所有DOM元素之后,我是否还应该使用DOM-ready函数?如果我不这样做,我的代码会失败吗?
谢谢!
答案 0 :(得分:13)
在<script>
之前的</body>
块中,您无法做到一件事:将DOM内容附加到正文中。这是追加相对于解析的问题,导致IE与可怕的“操作中止”相吻合。
因此,如果您有脚本或插件来执行此操作,则无法在body元素的末尾内联调用它们。否则继续。
它不会在最新的Mozilla,Opera或WebKit浏览器上获得任何东西,因为它们无论如何都会在瞬间触发ready
。它将避免在IE中出现令人不愉快但基本无害的黑客循环,并且对于其他(较旧的或较为模糊的)浏览器而言,它会更快地触发,否则它们将等待onload
。
答案 1 :(得分:1)
将脚本放在最后是另一个原因:浏览器不并行加载JS文件,因为它们会影响之后的所有内容。实际上,在下载和解析JS文件之前,所有内容都会在浏览器中停止 - 文本,图像,所有内容。因此,除非您必须尽早加载它们,否则请在页面末尾加载JS。
答案 2 :(得分:0)
DOM-ready函数确保实际创建了整个DOM,以便可以访问文档中的所有元素。正常window.onload
仅在加载了所有图像时加载,而jQuery的事件在文档结构存在时立即触发。如果您需要“在文档加载时”发生某些事情,则没有理由使用$(document).ready()
以外的任何内容。
答案 3 :(得分:0)
我从未遇到过无法访问我脚本之前出现的html元素DOM的浏览器。
那就是说,如果你已经拉入jQuery左右,我可能会使用ready()方法,只是为了让其他习惯使用jQuery的人更容易理解代码。
你有什么理由想避免这种情况吗?
(如果你正在寻找一种避免加载jQuery的方法,那么,是的,根据我的经验,你总是可以访问脚本之前出现的元素的DOM。)