【问题标题】:JS DOM: Get elements by text contentJS DOM:通过文本内容获取元素
【发布时间】:2011-02-14 14:47:04
【问题描述】:

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

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

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

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

有更好的想法吗?

谢谢

【问题讨论】:

    标签: javascript dom textnode


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果您拥有现代浏览器,则始终可以使用 XPATH,因为它具有基于内容的搜索功能。

      这是一个例子:

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

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

      【讨论】:

      【解决方案3】:

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

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

      //*[.='anytext']
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-16
        • 1970-01-01
        • 2017-04-03
        • 1970-01-01
        • 2016-05-18
        • 2017-05-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多