繁体   English   中英

检查变量中的元素在当前DOM中是否具有引用

[英]Check whether element from variable has a refference in current DOM

假设我在变量中有一个元素:

var element = document.getElementsByTagName("div")[0] 
// here can be any kind of getting element, e. g. React ref, Chrome's devtools $0, etc.

在某个时间点,我的标记发生了变化(例如在SPA中),并且变量中的element已从DOM中删除,但它仍在具有所有属性的element可用,例如parentElement等。

问题是:如何检查element中的DOM element是否存在于DOM中?

我尝试检查element.getBoundingClientRect() ,是的,有一些区别:从DOM中删除的元素在其边界矩形中具有所有零。 但是有一件事情: display: none元素display: none尽管DOM中仍然存在所有元素,但没有一个元素在其rect矩形中具有所有的零(实际上,可以说)。 在我的情况下,这是不可接受的,因为我需要将隐藏元素与已删除元素区别开。

您可以为此目的使用contains

 function contains() { const result = document.body.contains(element); console.log(result); } const element = document.getElementById('app'); contains(); element.classList.add('hide'); contains(); element.parentNode.removeChild(element); contains(); 
 .hide { display: none; } 
 <div id="app">App</div> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM