2010-11-26 36 views
0

我正在寻找获取某些文本的页面搜索的HTML,然后使用jQuery选择它所属的元素。不幸的是,这些元素没有唯一的ID。jQuery从HTML中选择文本

+0

这是你[问同样的问题早期(http://stackoverflow.com/questions/4281421/jquery-select-text-within-br-and-td-in-table)? – user113716 2010-11-26 00:34:38

+0

可能重复的[使用JQuery查找文本字符串?](http://stackoverflow.com/questions/926580/find-text-string-using-jquery) – 2010-11-26 00:44:31

+0

@patrick不是文本之前坐在课堂上,我可以行走; @Gert非常相似,除了我想要包含文本的父元素。 – van 2010-11-26 01:51:37

回答

1

考虑一下:

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

然后,当你做了搜索,获得只有span,这样做:

var elements = $('body *').contents().filter(function() { 
    return this.nodeType == 3 && $(this).text().indexOf("some text") != -1; 
}).parent(); 

如果文本在其他地方找到,elements也将包含其他元素。例如:

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

结果将包含spanp元件。

最后一个例子:

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

现在的结果将有div过,因为它是文本节点的直接父(即some text

5

你应该能够做到这一点

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