我知道这些状态之间的基本区别,但在我们的一个项目中出现了一个奇怪的问题。
jQuery(document).ready(function () {
console.log('Dom is ready');
jQuery(document).ready(function () {
console.log('Inner Dom ready');
});
});
结果:
Dom is ready
Inner Dom ready
现在,无论何时我调用document.ready()
,它都会执行其处理程序。
但是,如果你看一下这个例子
jQuery(window).load(function () {
console.log('Window Loaded');
jQuery(window).load(function () {
console.log('Inner window load');
});
});
结果:-
Window Loaded
为什么内部窗口的加载事件处理程序从未执行,即使窗口已经加载完成。 感谢您的评论和答案,但我只是好奇它们是如何在内部工作的。我同意jQuery(window).load()事件仅触发一次,因此没有其他加载事件处理程序执行的机会,那么为什么这个规则不适用于jQuery(document).ready()呢?它是否设置了某种标志或一些检查,每次调用时都会检查。
window.onload
只能被调用一次,但 jQuery 将函数封装在某个东西中,所以只有当窗口实际加载时才能调用它,而不是稍后,这就是为什么内部调用不起作用的原因。而DOMContentLoaded
和 jQuery 的ready
只要文档已经加载,就会随时被调用。 - adeneo