嵌套$(document).ready()和$(window).load()事件的区别
Difference between nested $(document).ready() and $(window).load() events
我知道这些状态之间的基本区别但是在我们的一个项目中出现了一个奇怪的问题
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(窗口).load()事件只触发一次,所以没有任何其他加载事件处理程序执行的机会,那么为什么这个规则不适用于jQuery(文档).ready()。它是否设置了某种标志之类的并在每次调用时检查
$(document).ready()
在加载HTML-Document并准备好DOM时执行。所以内部ready()
调用,因为DOM已经准备好了。ready()
只检查当前状态,不与以前的状态进行比较。所以输入这样的条件
if state=="ready" then invoke latest $(document).ready();
此条件适用于所有级别的ready()
方法。
$(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()
的状态没有改变(它保持不变)
相关文章:
- JavaScript承诺的定义以及与事件的区别
- 基于回调的事件处理系统和基于事件的事件处理系统有什么区别
- 调用事件侦听器 - 两种方式之一起作用,有什么区别
- jQuery和纯Javascript中的指针事件绑定之间的区别
- 无论是否有请求的结束事件;这就是区别
- 插入“事件”与否有什么区别
- js文件或html模板中的init事件之间的区别
- process.stdin流的可读事件和数据事件有什么区别
- 什么's作为匿名函数的默认事件处理程序与函数名称之间的区别
- 事件循环上下文中的微任务和宏任务之间的区别
- onblur事件在IE/Firefox/Chrome中有所区别
- 在 fetch 的成功和集合对象的绑定事件中编写代码有什么区别
- 带有多事件的$(function)与带有单事件的multi $(function)的区别
- “onwheel”和“onwheel”有什么区别?和“;onscroll"事件
- 嵌套$(document).ready()和$(window).load()事件的区别
- loadComplete和gridComplete事件有什么区别?
- 在onload事件中调用脚本与在html末尾放置代码的区别
- 浏览器中的事件循环和任务队列之间有区别吗
- javascript事件监听器中true和false之间的区别
- 快速点击事件和长时间的鼠标按下事件的区别