Jquery селектор / функция, которая объединяет «найти», «фильтр» и «ближайший» - PullRequest
0 голосов
/ 16 мая 2019

У меня есть наблюдатель мутации, который возвращает элементы, добавленные на веб-страницу.
У меня нет никакого контроля над этими элементами.

Мне нужно, учитывая эти элементы, чтобы найти все экземпляры определенногокласс (селектор типа ".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 вместе?

...