2011-08-12 45 views
0

我正在尋找一種方法來以類似的方式找到跨越多個節點的文本,例如Firefox。查找跨越多個節點的文本

按照給定的HTML:

<p>Lorem ipsum <b>dolor</b> sit amet.</p> 

當我搜索文本 「存有悲」,按ctrl + F Firefox會選擇該文本,即。將創建Range對象。

我知道我可以輕鬆地搜索文本節點內的文本(參見Find text string using jQuery?),但這在上例中不起作用。

+0

所以你的意思是忽略標籤? – ianace

+0

在說話的方式 - 是的,但我也必須有能力創造範圍(即選擇文本,強調它)。對不起,如果我沒有說清楚。 – jesper

回答

1

這將選擇包含指定爲indexOf的參數的文本的所有p元素。該text方法獲取元素的所有文本節點的內容,所以b標籤在你這個例子也不會事:

$("p").filter(function() { 
    return $(this).text().indexOf("ipsum dolor") > -1; 
}); 

看到它的工作here

+0

是的,它適用於這種情況,但是我想在你的例子中僅使用文本(ipsum dolor)。 – jesper

+0

我認爲唯一的方法是開發一些複雜的算法來完成這項工作 – jesper

1

window.find正是我要找的。

+0

whatwg.org的討論表明它不在Opera中:-(http://developers.whatwg.org/dnd.html#text-search-apis – eimaj

+0

是:(在FF,Chrome,Safari中可以工作,在IE中我可以使用TextRange對象,但是在Opera中我找不到類似的功能:/ – jesper