15

我正在寻找一种使用 JS 在 DOM 树上执行全文搜索的方法。总之,我想检索包含给定字符串的文本节点列表。

我已经尝试过 mootools'Element.getElements ( ':contains[string]' )但我无法让它与包含空格的字符串一起使用。

编辑:jQuery 和 mootools 似乎让他们的:contains操作员通过树遍历工作。这意味着没有本地搜索页面的方式,这是正确的吗?如果页面很大并且您拥有的有关元素的唯一信息是正在搜索的字符串,则似乎效率很低。我错了吗?

我正在考虑索引所有文本节点并检查每个正在搜索的字符串的索引,但是,在我的项目中,没有办法知道 DOM 何时更新以保持这样的索引是最新的。

有更好的想法吗?

谢谢

4

3 回答 3

22

如果你有一个现代浏览器,你总是可以使用 XPATH,因为它有基于内容的搜索。

这是一个例子:

document.evaluate('//*[text()="' + string + '"]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE).snapshotItem(0);

对于较旧的浏览器,您可以使用http://llamalab.com/js/xpath/之类的内容填充 XPATH

于 2012-03-04T21:19:19.643 回答
4

来自 jquery 的“包含”选择器会解决问题吗?

http://api.jquery.com/contains-selector/

于 2010-05-02T01:41:32.043 回答
1

一般 DOM:用于在 DOM 中按文本获取元素

//*[text()='anytext']

或者

//*[.='anytext']
于 2014-10-21T16:03:17.263 回答