jQuery element.ready()如何工作?

问题描述 投票:1回答: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之后出现的另一个元素,我们将获得正确的值,而不是“ undefined”,如果我们试图在#myelement之后放置在html内的脚本中获取该元素,则会得到该信息。

所以(#myelement).ready()是虚拟事件处理程序,它对element.ready()事件中的所有DOMContentLoaded事件做出响应吗?

抱歉,我写的太多了;希望我很清楚

jquery onload jquery-events document-ready
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,不适用于单个元素。

© www.soinside.com 2019 - 2024. All rights reserved.