Есть ли альтернатива jQuery / sizzle, которая поддерживает textNodes как первоклассных граждан в селекторах?

Я обнаружил, что мне нужны селекторы с полной поддержкой DOMtextNodeс, что JQuery не предоставляет.

jQuery игнорирует текстовые узлы, возможно, потому, что большинство страниц содержат тонны нерелевантных пустых между тегами, которые различные браузеры могут обрабатывать по-разному.

Большинство ответов на вопросы jQuery о текстовых узлах сводятся к использованию.contents() функция, которая возвращает все дочерние узлы для выбранных элементов, включая текстовые узлы - все остальные API jQuery игнорируют текстовые узлы.

Часто вам не нужно то, что не может быть легко построено на.contents() но я оказался в такой ситуации.

Мой вариант использования заключается в том, что я хочу найти и обернуть произвольные фрагменты текста на сторонних веб-страницах, которые я не могу контролировать. (Вспомните расширение браузера или пользовательский скрипт.)

До сих пор я был рад пройтись по DOM в поисках всех текстовых узлов или найти элемент-обертку, который содержит все интересующие меня текстовые узлы и использовать.contents() перебирать их.

Но теперь я обнаружил, что иногда мне нужны все возможности селекторов jQuery / sizzle, чтобы сузить фокус до определенных возможностей классов внутри классов и т. Д.

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

Поэтому я ищу какой-то другой инструмент JavaScript, который предлагает что-то вроде селекторов, но позволяет выбирать произвольно смешанные текстовые узлы в синтаксисе выражения селектора.

Вот пример того, что мне может понадобиться сделать:

$('.ii:even > div > TXT, .ii:even > div > div.im > TXT')

Вот пример, который мне лично пока не нужен, но легко можно представить:

$('#something .somethingElse TXT')

Когда вы можете обратиться (выбрать) непосредственный родитель (ы) textNodes, перебирая их.contents() это легко, не так, когда вы можете только идентифицировать некоторого произвольного предка, но хотите, чтобы все текстовые узлы были ниже этого, что, конечно, тривиально для узлов элементов.

Ответы на вопрос(1)

Ваш ответ на вопрос