Проверьте, содержит ли узел какой-либо элемент с классом - PullRequest
0 голосов
/ 15 октября 2018

У меня есть NodeList.Я хочу проверить каждый узел, один за другим, содержит ли он какой-либо элемент с определенным классом.

Мне известен метод Node.contains (), но я не могу понять, как искать какой-либо элементс определенным классом.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Вы можете использовать это

Array.from(document.getElementsByClassName("someClass")).some(({classList}) =>classList.contains('requiredClass'))
0 голосов
/ 15 октября 2018

ES6 Синтаксис распространения обычно самый простой.В качестве альтернативы вы можете использовать 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>
...