Есть много способов сделать это.Вы можете думать об элементе с наибольшим количеством родителей.
Таким образом, вы можете сделать это довольно хакерским способом, например:
var nodes, lastNodes;
var parents = [];
do {
lastNodes = nodes;
nodes = document.querySelectorAll(parents.join("* > ") + '*');
parents.push("");
} while(nodes.length > 0);
console.log(lastNodes);
Это попытается получить узлыу которых есть родитель (* > *
), затем попытается получить узлы, у которых есть родитель, у которого есть родитель (* > * > *
), а затем у узлов, у которых есть родитель, у которого есть родитель, у которого есть родитель (* > * > * > *
)и так далее ...
Остановится, когда не будет получено ни одного узла, и запишет последние полученные узлы, которые будут узлами с самыми низкими родителями.