Existe uma alternativa ao jQuery / sizzle que suporta textNodes como cidadãos de primeira classe em seletores?

Descobri que preciso de seletores com suporte total para DOMtextNodes que o jQuery não fornece.

O jQuery ignora os nós de texto, provavelmente porque a maioria das páginas tem toneladas de tags vazias irrelevantes entre as tags que os vários navegadores podem tratar de forma diferente.

A maioria das respostas às perguntas do jQuery sobre os nós de texto se resume a usar o.contents() função que retorna todos os nós filhos para os itens selecionados, incluindo nós de texto - todas as outras APIs do jQuery ignoram os nós de texto.

Muitas vezes você não precisa de algo que não possa ser facilmente construído.contents() mas eu me encontrei em tal situação.

Meu caso de uso é que eu quero localizar e, em seguida, associar execuções arbitrárias de texto em páginas da Web de terceiros sobre as quais não tenho controle. (Pense na extensão do navegador ou no userscript.)

Até agora eu estive feliz em percorrer o DOM procurando por todos os nós de texto ou encontrar um elemento de wrapper que contenha todos os nós de texto em que estou interessado e use.contents() para iterar através deles.

Mas agora eu descobri que às vezes preciso do poder total dos seletores jQuery / sizzle para restringir meu foco a certas possibilidades de classes dentro de classes, etc.

Eu considerei maneiras de estender o jQuery com umtextNode selector, mas isso parece ser impossível devido a uma regra generalizada de ignorar os nós de texto que filtraria muitos deles antes que meu ramal fosse chamado.

Assim, estou procurando por alguma outra ferramenta JavaScript que oferece algo como seletores, mas permite selecionar nós de texto misturados arbitrariamente em sua sintaxe de expressão de seletor.

Aqui está um exemplo do que eu preciso fazer:

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

Aqui está um exemplo que eu pessoalmente não precisava ainda, mas posso imaginar facilmente:

$('#something .somethingElse TXT')

Quando você pode endereçar (selecionar) o (s) pai (s) imediato (s) dos textNodes, iterando sobre seus.contents() é fácil, não é assim quando você só pode identificar algum ancestral arbitrário, mas quer todos os nós de texto abaixo dele, o que é obviamente trivial para os nós de elementos.

questionAnswers(1)

yourAnswerToTheQuestion