我知道这些状态之间的基本区别,但我们的一个项目出现了一个奇怪的问题
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(使用前将#替换为@)