检查节点是否包含任何具有类的元素

时间:2018-10-15 08:11:59

标签: javascript dom nodelist

我有一个NodeList。我想一个接一个地检查每个节点,是否包含任何具有特定类的元素。

我知道Node.contains()方法,但是我不知道如何搜索具有特定类的任何元素。

谢谢。

2 个答案:

答案 0 :(得分:1)

ES6 spread syntax通常是最简单的。另外,您可以使用Array.from()将NodeList转换为数组,然后使用任何数组函数来过滤所需的内容。在这种情况下,我仅使用.filter()来抓取那些包含任何带有.test元素的元素:

const nodes = document.querySelectorAll('div');

const filtered = [...nodes].filter(el => el.querySelector('.test') !== null);

console.log('All nodes:', [...nodes]);
console.log('Filtered:', filtered);

console.log('Filtered (outerHTML):', filtered.map(el => el.outerHTML));
<div><span class="test" /></div>
<div><span class="rawr" /></div>

答案 1 :(得分:-1)

您可以使用此

Array.from(document.getElementsByClassName("someClass")).some(({classList}) =>classList.contains('requiredClass'))