¿Existe alguna alternativa a jQuery / sizzle que admita a TextNodes como ciudadanos de primera clase en los selectores?

Descubrí que necesito selectores con soporte completo para DOMtextNodes que jQuery no proporciona.

jQuery ignora los nodos de texto, probablemente porque la mayoría de las páginas tienen toneladas de páginas en blanco irrelevantes entre las etiquetas que los distintos navegadores pueden tratar de manera diferente.

La mayoría de las respuestas a las preguntas de jQuery sobre los nodos de texto se reducen al uso de.contents() función que devuelve todos los nodos secundarios para los elementos seleccionados, incluidos los nodos de texto; todas las demás API de jQuery ignoran los nodos de texto.

A menudo no necesitas algo que no se pueda construir fácilmente.contents() pero me he encontrado en tal situación.

Mi caso de uso es que quiero ubicar y luego envolver secuencias arbitrarias de texto en páginas web de terceros sobre las que no tengo control. (Piense en la extensión del navegador o en el script de usuario).

Hasta ahora he estado encantado de recorrer el DOM buscando todos los nodos de texto o encontrar un elemento de envoltura que contenga todos los nodos de texto que me interesan y uso.contents() iterar a través de ellos.

Pero ahora he descubierto que a veces necesito todo el poder de los selectores jQuery / sizzle para limitar mi enfoque a ciertas posibilidades de clases dentro de clases, etc.

Consideré formas de extender jQuery con unatextNode Selector, pero eso parece ser imposible debido a una regla generalizada de ignorar los nodos de texto que filtrarían muchos de ellos antes de que se llame a mi extensión.

Por lo tanto, estoy buscando alguna otra herramienta de JavaScript que ofrezca algo así como selectores pero que permita seleccionar nodos de texto mezclados arbitrariamente en su sintaxis de expresión de selector.

Aquí hay un ejemplo de lo que podría necesitar hacer:

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

Aquí hay un ejemplo que personalmente no he necesitado todavía, pero puedo imaginar fácilmente:

$('#something .somethingElse TXT')

Cuando puede direccionar (seleccionar) los padres inmediatos de los TextNodes, iterar sobre sus.contents() es fácil, no cuando solo se puede identificar un antepasado arbitrario pero se quieren todos los nodos de texto debajo de esto, lo que por supuesto es trivial para los nodos de elementos.

Respuestas a la pregunta(1)

Su respuesta a la pregunta