У меня есть наблюдатель мутации, который возвращает элементы, добавленные на веб-страницу.
У меня нет никакого контроля над этими элементами.
Мне нужно, учитывая эти элементы, чтобы найти все экземпляры определенногокласс (селектор типа ".myClass") из этих элементов в области, которая суммирует:
.find(".myClass")
(возвращает все элементы среди всех дочерних элементов и дочерних элементов) .filter(".myClass")
(поиск класса среди всех заданных элементов) .closest(".myClass")
(поиск класса среди родителей)
Возвращенный массив не должен повторять ни один элемент.
Я знаю, что все элементы, содержащие класс, находятся на одном уровне, но нет абсолютно никакого шаблона для уровня элементов, возвращаемых наблюдателем.
На данный момент это лучшее решение, но когда добавленные узлы приходят с разных уровней, вроде как перепутаны, у меня появляется много ненужно повторяющихся элементов:
addedNodes = addedNodes.filter(el => typeof el !== 'undefined');
var $addedNodes = $(addedNodes);
var $foundComments = $addedNodes.find(".myClass").addBack(".myClass");
var $foundParents = $addedNodes.closest(".myClass");
$foundComments = $.merge($foundComments, $foundParents);
Обратите внимание, что .find().addBack()
выполняет часть работы.Он объединяет find
и filter
.Есть ли способ соединить closest
вместе?