【发布时间】:2013-04-30 12:49:48
【问题描述】:
我使用 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 之后的另一个元素,我们会获得一个正确的值,而不是如果我们试图在 #myelement 之后放置在 html 中的脚本中获取该元素,我们将获得“未定义”。
那么,(#myelement).ready() 是不是一个虚构的事件处理程序,它响应 DOMContentLoaded 事件中的所有 element.ready() 事件?
抱歉,我写的太多了;希望我清楚
【问题讨论】:
标签: jquery onload jquery-events document-ready