嵌套 $(document).ready() 和 $(window).load() 事件之间的区别

2024-04-02

我知道这些状态之间的基本区别,但我们的一个项目出现了一个奇怪的问题

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()。它是否设置某种标志或其他东西并在我们每次调用它时进行检查。


$(document).ready()当 HTML 文档加载且 DOM 准备就绪时执行。如此内在ready()调用是因为 DOM 已经准备好。ready()仅检查当前状态而不与先前状态进行比较。所以条件是这样的

if state=="ready" then invoke latest $(document).ready();

此条件适用于所有级别ready() method.

BUT

$(window).load()当整个页面完全加载时执行,包括所有框架、对象和图像。简单来说,load()当状态从另一个状态更改为已加载状态时执行。第一的load()当状态从另一个状态加载时执行,但内部load()未检测到并且状态发生变化,因此不会执行。

if (is_state_changed=true AND current_state=="ready" AND current_state !== previous_state) then invoke latest $(window).load();

上述条件适用于第一个/外部load(),但对于内部则不然load()因为内部的状态没有改变(它保持不变)load()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌套 $(document).ready() 和 $(window).load() 事件之间的区别 的相关文章