2010-11-26 7 views
0

私は、あるテキストのページ検索のHTMLを取得して、それがjQueryに属する要素を選択するのを探しています。残念ながら、要素の一意のIDはありません。jQuery、HTMLからテキストを選択

+0

の直接の親であるよう

<div>some text<span>some text</span><p>some text</p><strong>not the same text</strong></div> 

さて結果は、あまりにもdivを持っていますが、これはあなたが[について尋ねたのと同じ問題です以前の](http://stackoverflow.com/questions/4281421/jquery-select-text-within-br-and-td-in-table)? – user113716

+0

[JQueryを使用してテキスト文字列を検索する]の可能性のある複製(0120-18753) –

+0

@patrickはテキストがクラス内にあり、ドームを歩く。 @Gertは非常によく似ていますが、テキストを含む親要素が必要です。 – van

答えて

1

を行うことができるはず:

var elements = $('body *').contents().filter(function() { 
    return this.nodeType == 3 && $(this).text().indexOf("some text") != -1; 
}).parent(); 
:これを行う、あなたが検索を行うときにのみ spanを取得するには、次に

<div><span>some text</span></div> 

テキストが他の場所にある場合は、elementsにも他の要素が含まれます。たとえば:

<div><span>some text</span><p>some text</p><strong>not the same text</strong></div> 

結果はspanpの要素が含まれます。

最後の例:それはテキストノード(すなわちsome text

+0

jqueryではありませんが、それは動作します – van

+0

@nav - $(...)のどの部分のコンテンツ()。フィルタ(...)。 jQueryではありませんか? – scunliffe

+0

@scunliffe:彼は 'this.nodeType'部分を意味すると思います。残りはjQueryです:) – cambraca

5

あなたはこの考えてみましょう。この

var element = $('*:contains("search text")'); 
+2

ちょうどこれが非常に高価なクエリである可能性があることに気をつけてください... – scunliffe

+3

これはすべての親を ''要素まで(技術的にはその文字列を含んでいるので) – cambraca

+0

まで選択し、 .each() 'を実行して要素をループします。 – thomaspaulb

関連する問題