我可以知道元素是否在文档中吗?
Can I know if element is in document or not?
var myElement = document.querySelector('div.example');// <div..></div>
/*
* A lot time after, codes executed, whatever
*/
if( myElement.isInDocument )
{
// Do something
}
有没有一种简单的方法可以知道"myElement"是否仍在文档中?
来自 Mozilla:
function isInPage(node) {
return (node === document.body) ? false : document.body.contains(node);
}
由于文档中的每个元素都是文档的子元素,请检查您的元素是否为:
function isInDocument(e) {
while( e.parentNode) e = e.parentNode;
return e === document;
}
一种方法是使用contains()
var myElement = document.querySelector('div.example');
console.log("elment ", myElement);
console.log("contains before ", document.body.contains(myElement));
myElement.parentNode.removeChild(myElement);
console.log("contains after ", document.body.contains(myElement));
JSFiddle
您可以先查看 .contains()
方法是否存在,如果可用,请使用它。 如果没有,请遍历父链以查找文档对象。 从之前使用此类代码的项目中,当您进入文档时,您不能只依赖 parentNode 为空(在某些版本的 IE 中),因此您还必须显式检查这样的文档:
function isInDocument(e) {
if (document.contains) {
return document.contains(e);
} else {
while (e.parentNode && e !== document) {
e = e.parentNode;
}
return e === document;
}
}
对于现代浏览器,答案是myElement.isConnected
https://developer.mozilla.org/en-US/docs/Web/API/Node/isConnected
相关文章:
- 是否存在Javascript Liferay Service库的文档?如何处理错误情况
- 是否可以使用有角度的HTML文档进行$编译
- 将事件发送到javascript文档的react本机模块是否正确
- 用javascript从窗口获取文档,同时检查文档是否已加载
- Ember文档理解-模型是否链接到模板
- 我是否可以使用 Angular 将鼠标向上事件绑定到文档正文
- 是否有 jQuery 事件用于何时将元素添加到文档中
- 检查文档是否已经存在,如果是则更新,否则创建新的Mongoose
- Rect.map():文档是否错误
- 如何使用撤消管理器确定文档是否有未保存的更改
- jQuery文档是否准备好等待通过Backbone动态注入的html元素
- 如何检查文档是否已准备好使用JavaScript
- Lawnchair:检查存储及其文档是否存在
- 检查文档是否已经存在
- 如何检测文档是否回焦
- 如何知道文档是否已加载
- 如何在AngularJS上使用service函数检查一个包db文档是否存在
- 测试文档是否.明确设置了域
- 蒙皮查询检查文档$是否存在,使用一个变量作为查询键
- Nodejs, MongoDB -确定集合中的文档是否被更新或插入