我使用 Javascript 多年,但从未觉得需要使用像 jQuery 这样的库;在我现在工作的地方,使用了这个库,我发现它很有趣,即使我仍然更喜欢坚持纯 Javascript。
该问题具有理论价值;我想知道.ready
当与 DOM 树中的通用元素相关时,该函数是如何工作的。
我找到了关于文档如何.ready()
工作的线程,但这不难发现 jQuery 以某种方式使用了 DOM 事件DOMContentLoaded
,很容易获得。
但是在页面中加载特定元素的捕获不太明显,因为,AFAIK,没有事件发生。
因为 jQuery 是 Javascript,我们可以在文档的每个部分添加事件监听器,我认为 jQuery 不会<script>
在元素后添加标签来处理其加载事件,否则如果在解析通过之后创建它就不会执行观点。
我还认为 jQuery 不使用基于 setInterval 的检查,重复检查元素是否已创建,因为它浪费了大量资源(尤其是当许多元素具有加载事件时),但它很少会在创建元素。
我可以想象的是,捕获DOMContentLoaded
事件(所以不是在元素加载之后,而是在所有文档加载之后),jQuery 调用.ready()
放置在文档事件中的人工事件,按照 DOM 树的出现顺序。这是正确的还是 jQuery 找到了解决方法?
我认为,在一个元素的处理程序中,假设 id "myelement", $(#myelement).ready()
,如果我们尝试getElementById("someID")
出现在 之后的另一个元素#myelement
,我们会获得一个正确的值,而不是我们试图获得的“未定义”在 .html 之后放置在 html 内的脚本中获取该元素#myelement
。
那么,是(#myelement).ready()
一个虚构的事件处理程序,它响应element.ready()
事件内部的所有DOMContentLoaded
事件吗?
对不起,如果我写的太多;希望我很清楚