我正在寻找一种使用JS在DOM树上执行全文搜索的方法。换句话说,我想检索包含给定字符串的文本节点列表。
我已经尝试了mootools'Element.getElements ( ':contains[string]' )
,但我无法使用包含空格的字符串。
编辑:jQuery和mootools似乎让他们的:contains
运算符通过树遍历工作。这意味着搜索页面没有本地方式,这是正确的吗?如果页面很大,并且您对元素的唯一信息是要搜索的字符串,则效率非常低。我错了吗?
我正在考虑索引所有文本节点并检查每个被搜索字符串的索引,但是,在我的项目中,没有办法告诉DOM何时更新以保持这样的索引到达 - 日期。
有更好的想法吗?
由于
答案 0 :(得分:20)
如果你有一个现代浏览器,你总是可以使用XPATH,因为它有基于内容的搜索。
这是一个例子:
document.evaluate('//*[text()="' + string + '"]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE).snapshotItem(0);
使用旧版浏览器,您可以使用http://llamalab.com/js/xpath/
等内容来填充XPATH答案 1 :(得分:4)
来自jquery的'contains'选择器会解决问题吗?
答案 2 :(得分:1)
一般DOM:用于在DOM中逐个文本获取
//*[text()='anytext']
或
//*[.='anytext']