textNode
jQueryが提供していないDOMを完全にサポートするセレクターが必要であることがわかりました。
jQueryはテキストノードを無視します。これはおそらく、ほとんどのページのタグ間に無関係な空白のノードが大量にあり、さまざまなブラウザで異なる方法で処理できるためです。
テキストノードに関するjQueryの質問に対するほとんどの回答は、.contents()
テキストノードを含む選択されたアイテムのすべての子ノードを返す関数を使用することになります。他のすべてのjQueryAPIはテキストノードを無視します。
多くの場合、簡単に構築できないものは必要ありませんが.contents()
、私はそのような状況にいることに気づきました。
私の使用例は、私が制御できないサードパーティのWebページで、任意のテキストの実行を見つけてラップしたいというものです。(ブラウザ拡張機能またはユーザースクリプトを考えてください。)
これまでのところ、すべてのテキストノードを探してDOMを歩き回ったり、関心のあるすべてのテキストノードを含むラッパー要素を見つけたりして、.contents()
それらを反復処理することができます。
しかし今では、クラス内のクラスなどの特定の可能性に焦点を絞るために、jQuery/sizzleセレクターのフルパワーが必要になることがあります。
セレクターを使用してjQueryを拡張する方法を検討しましたtextNode
が、拡張機能が呼び出される前にテキストノードの多くをフィルターで除外するという一般的なルールがあるため、それは不可能のようです。
したがって、セレクターのようなものを提供するが、セレクター式の構文に任意に混合されたテキストノードを選択できる他のJavaScriptツールを探しています。
これが私がする必要があるかもしれないことの例です:
$('.ii:even > div > TXT, .ii:even > div > div.im > TXT')
これは私が個人的にまだ必要としない例ですが、簡単に想像できます:
$('#something .somethingElse TXT')
textNodeの直接の親をアドレス指定(選択)できる場合、それらの反復.contents()
は簡単です。任意の祖先のみを識別でき、この下のすべてのテキストノードが必要な場合は、もちろん要素ノードでは簡単です。 。