Javascript 遍历DOM树并检查是否有父类
我有一个HTMLDOM对象,我选择了属性为:data-reveal的所有元素Javascript 遍历DOM树并检查是否有父类,javascript,jquery,dom,attributes,traversal,Javascript,Jquery,Dom,Attributes,Traversal,我有一个HTMLDOM对象,我选择了属性为:data-reveal的所有元素 var revealList = doc.querySelectorAll('[data-reveal]'); 我希望遍历这些元素,并检查是否存在具有类注释的父元素。只有当全班同学都不在的时候,我才想做点什么 我使用了其他帖子中建议的最接近的方法,但代码没有返回任何内容 for (var i = 0; i < revealList.length; i++) { if (revealList[i].close
var revealList = doc.querySelectorAll('[data-reveal]');
我希望遍历这些元素,并检查是否存在具有类注释的父元素。只有当全班同学都不在的时候,我才想做点什么
我使用了其他帖子中建议的最接近的方法,但代码没有返回任何内容
for (var i = 0; i < revealList.length; i++) {
if (revealList[i].closest('[data-conceal]').length = 0) {
// do something
}
};
for(变量i=0;i
这是一个最小的HTML示例
<div class="parent">
<div class="note">
<img data-reveal="2" href="">
<img data-reveal="3" href="">
<img data-reveal="4" href="">
</div>
<img data-reveal="5" href="">
<img data-reveal="6" href="">
</div>
可能是我在if子句中选择对象时出错了吧?请注意,原生JS(非jQuery)是实验性的,并非所有浏览器都支持(目前)
在代码中,您应该查找最接近的。注意
。因此,与此相反:
revealList[i].closest('[data-conceal]')
这样做:
revealList[i].closest('.note')
与jQuery.nexist()
不同,本机最接近者在找不到任何内容时返回null
,尝试查找null
的长度时会抛出错误。在尝试使用结果之前检查null
一个有效的例子:
var-revealList=document.querySelectorAll(“[data-reveal]”);
var票据;
对于(变量i=0;i
既然您使用jquery作为标记,这是一个公平的游戏,:D我可能会这样做
$('img').filter('[data-reveal]').each(function(){
var$this=$(this);
if($this.closest('[data-hidden]')。长度<1){
console.log(this);
}
});代码>
旁注,=0是一个赋值。另外,您应该避免纯粹的属性查找。它们的速度可能非常慢,因为它们必须检查作用域中可用的每个dom元素,以查看它们是否匹配。尝试改用类或id,或者在使用属性选择器之前选择元素的子集。应该注意的是,并非所有浏览器都支持该方法(目前)。我迟钝地注意到了:)谢谢,关于最接近的返回null和not true/false的提示是关键。