在JavaScript中过滤掉父元素中的所有子元素

在JavaScript中过滤掉父元素中的所有子元素,javascript,html,dom,Javascript,Html,Dom,我正试图用普通JavaScript查询DOM,以从带有classicon的父节点中筛选出包含img标记的所有元素。例如: 在编写查询之后,它应该返回两个元素和 这不应返回任何内容: 使用jQuery,我可以通过以下方式轻松实现这一点: jQuery('.icon').not(':has(img)' 我发现在普通JavaScript中实现同样的功能有点困难。选择all。icon,在它们之间循环,过滤掉所有包含img const result=[…document.querySelecto

我正试图用普通JavaScript查询DOM,以从带有class
icon
的父节点中筛选出包含
img
标记的所有元素。例如:

在编写查询之后,它应该返回两个元素

这不应返回任何内容:


使用jQuery,我可以通过以下方式轻松实现这一点:

jQuery('.icon').not(':has(img)'

我发现在普通JavaScript中实现同样的功能有点困难。

选择all
。icon
,在它们之间循环,过滤掉所有包含
img

const result=[…document.querySelectorAll(`.icon`)]
.filter(item=>!item.querySelector(`img`)
控制台日志(结果)

@qiAlex-谢谢你让这个看起来这么简单。我必须做一些调整,以使其在IE中工作。以下代码可能会帮助具有相同要求的人:

const iconsArray=document.queryselectoral('.icon');
Array.prototype.forEach.call(IConArray,函数(元素){
if(!element.querySelector('img')){
// .....
}
});