1

我使用 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事件吗?

对不起,如果我写的太多;希望我很清楚

4

1 回答 1

0

好吧,根据http://api.jquery.com/ready/,该ready()函数是在DOM准备好(完全加载)后执行的处理程序/函数。继续阅读......

.... In most cases, the script can be run as soon as the DOM hierarchy has been fully constructed. The handler passed to .ready() is guaranteed to be executed after the DOM is ready,

也根据同一来源

以下所有三种语法都是等效的:

$(document).ready(handler)
$().ready(handler) (this is not recommended)
$(handler)

所以......该ready()功能仅适用于document而不适用于单个元素。

于 2013-04-30T12:57:36.903 回答