Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查元素及其子元素是否已加载_Javascript_Jquery_Html - Fatal编程技术网

Javascript 检查元素及其子元素是否已加载

Javascript 检查元素及其子元素是否已加载,javascript,jquery,html,Javascript,Jquery,Html,我知道jQuery中的.load()函数,以及如何将回调函数用于该函数。。。但是有没有一种方法可以使用if语句检查元素是否已加载 我的理由。。。我想设置一个间隔,并检查一个元素及其所有子元素是否已完全加载 var load-interval = setInterval(function(){ if($('#content').hasBeenLoaded){ //do stuff } }, 1000); 只需注意,在初始页面加载期间,仅包含被视为非空的文本节点的元

我知道jQuery中的
.load()
函数,以及如何将回调函数用于该函数。。。但是有没有一种方法可以使用
if
语句检查元素是否已加载

我的理由。。。我想设置一个间隔,并检查一个元素及其所有子元素是否已完全加载

var load-interval = setInterval(function(){
    if($('#content').hasBeenLoaded){
        //do stuff
    }
}, 1000);

只需注意,在初始页面加载期间,仅包含被视为非空的文本节点的元素:

,在解析文件时会逐步创建DOM元素,但在引用图像资产时通常会异步加载它们

因此,当页面加载时,解析器将遇到元素

将立即创建此元素,然后创建其子元素,最后将找到该div的结束标记。在这一点上,您可以考虑DOM本身是为该元素“加载”的。

执行某项操作的最简单方法是在结束标记之后立即将其放入
标记中

如果您还想等待图像资源加载,那么这里仍然是放置它的地方。您可以在先前加载的div中查找所有
标记,并注册
onload
回调,例如

<div id="mycontent">
    lots of DOM, including image tags
</div>
<script>
(function() {
    var div = document.getElementById('mycontent'); // guaranteed to exist
    var imgs = div.getElementsByTagName('img');

    // put image load detection code here - exercise for the reader
})();
</script>

很多DOM,包括图像标记
(功能(){
var div=document.getElementById('mycontent');//保证存在
var imgs=div.getElementsByTagName('img');
//将图像加载检测代码放在此处-读者练习
})();

为什么要在某个时间间隔后进行检查?什么事件将开始间歇?@Coenwulf这有什么关系?此事件将尽快触发我询问,因为这些信息可能会导致更好的答案。@Adjit回调方法有什么问题吗?这是获得直接通知的唯一方法。@Alnitak只是尽量简单。而且我正在检查的内容没有被动态加载,所以当我运行这个函数时,要么因为其他元素还不存在而无法运行,要么在执行时页面已经被加载。在AJAX内容返回并插入到其位置之前,元素不是仍然充满了以前的内容吗?@Alnitak,我不会骗你,我不知道提问者想在这里完成什么,为什么不使用
load
回调,因为这是正确的方法。我只是回答了他的问题:“但是有没有一种方法来检查一个元素是否使用IF语句加载了?”@ GDORON我没有通过Ajax加载任何东西,但是我可以考虑改变我的工作流…只是试图将其保持为一个简单的页面。@Adjit例如,如果您的目的是检查
#content
中的所有图像是否都已加载,则这样做是行不通的,因为
:empty
选择器正在查找(任何)DOM节点,而不是加载的资源。
<div id="mycontent">
    lots of DOM, including image tags
</div>
<script>
(function() {
    var div = document.getElementById('mycontent'); // guaranteed to exist
    var imgs = div.getElementsByTagName('img');

    // put image load detection code here - exercise for the reader
})();
</script>