$(document).ready()
移至 $(window).load()
后问题得到了解决。我了解到
window.load
会在 document.ready
后立即触发,但为什么在 window.load()
之后还不准备好呢?$(document).ready()
移至 $(window).load()
后问题得到了解决。window.load
会在 document.ready
后立即触发,但为什么在 window.load()
之后还不准备好呢?load
在所有资源加载完成后被调用,包括图片。 ready
在文档可以交互之前被触发。
来自 MDC 的描述:window.onload:
在文档加载过程中,载入(load)事件将在该过程结束时被激活。此时,在文档中的所有对象都已经被解析为DOM节点,并且所有的图像和子框架元素也已经完成了加载。
来自 jQuery API 文档的描述:.ready( handler ):
虽然 JavaScript 提供了 load 事件,以便在页面呈现时执行代码,但是该事件直到所有诸如图片等的资源都完全接收后才会被触发。在大多数情况下,只要 DOM 层次结构已经完全构造,脚本就可以运行。传递给 .ready() 的处理函数保证在 DOM 就绪后执行,因此这通常是附加所有其他事件处理程序和运行其他 jQuery 代码的最佳位置。当使用依赖于CSS样式属性值的脚本时,重要的是在引用脚本之前引用外部样式表或嵌入样式元素。
$(document).ready()
表示页面的DOM已经准备就绪,可以进行操作。
window.load()
会在整个页面(包括CSS和图像文件等组件)完全加载后触发。
你想要实现什么目标?
$(document).ready(function(){
//code here
});
在我们处理 jQuery
时,几乎每次都会使用上面的代码。
当我们想要在 DOM 准备就绪后初始化 jQuery
代码时,可以使用此代码。
$(window).load()
有时候您需要处理图片。例如,您想要垂直和水平对齐一张图片,并且您需要获取图片的宽度和高度才能实现此操作。如果访问者尚未加载图像,则使用 $(document).ready()
将无法完成此操作,那么您需要在图像完成加载时初始化 jquery
对齐功能。这就是我们使用 $(window).load()
的地方。
$(document).ready
是一个由 jQuery
触发的事件,当 DOM 加载完成时触发,因此它在文档结构准备好后触发。
$(window).load
事件是在整个内容(包括 CSS、图片等)加载完成后触发。
这是主要的区别。
$(document).ready()
把DOM内容包裹在 <body>...</body>
中。
$(window).load()
把所有DOM内容包裹在 <html>...</html>
中。
在你的情况下,可以使用它来节省渲染处理时间。
window.load
在窗口的所有内容都加载完毕后被调用,而document.ready
是在 DOM 加载完成且文档结构准备好后被调用。加载状态是指窗口对象已经创建并且所有必要的组件包括DOM已经加载到内存中,但尚未传递给渲染引擎以在页面中进行呈现。
另一方面,就绪状态确保DOM元素、事件和其他依赖组件已传递到渲染引擎,在页面上呈现,并准备好进行交互和操作。
$(document).ready 与 $(window).load 事件相比速度更快的是滑块。
$(document).ready 会在文档加载时触发,但 $(window).load 事件会在文档、CSS 和图片全部加载完毕后触发。
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="https://code.jquery.com/jquery-1.12.4.js" ></script>
<script>
$(window).load(function () {
var img = $('#img1');
alert( "Image Height = " + img.height() + "<br>Image Width = " + img.width());
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<img id="img1" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTozkxoNSH8739juRXJJX5JxREAB6I30bFyexPoCdRVa2fKfH2d" />
</div>
</form>
</body>
</html>
$(document).ready
是一个 jQuery 事件。它会在 DOM 加载完成并准备好被脚本操作时触发。这是页面加载过程中脚本可以安全地访问页面 HTML DOM 元素的最早时间点。在所有图片、CSS 等全部加载完成之前,该事件就已经被触发了。
window.load()
会在整个页面(包括 CSS 和图像文件等组件)完全加载后触发。