【问题标题】:jQuery/Sizzle to select Text nodes only (or, how to transform XPath expression to Sizzle)jQuery/Sizzle 仅选择文本节点(或者,如何将 XPath 表达式转换为 Sizzle)
【发布时间】:2012-05-15 01:19:47
【问题描述】:

我有以下 XPath 表达式来获取元素内的所有 textNodes

var textnodes = document.evaluate('descendant::text()', element, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);

在 Chrome 和 Firefox 上完美运行,但在 IE 上运行。

由于 Sizzle 是浏览器证明的,我想知道,有没有办法只使用 Sizzle/jQuery 选择 textNodes?众所周知,IE是个大问题,IE9也没有XPath(10th呢?)。

或者,换句话说,我如何将我的 XPath 表达式转换为 Sizzle?

【问题讨论】:

    标签: javascript jquery xpath sizzle


    【解决方案1】:

    在 jQuery 中,您可以使用 filternodeType 来获取元素中的文本节点:

    var textnodes = $('*').contents().filter(function(){
        return this.nodeType === 3;
    });
    

    【讨论】:

    • 结果集不匹配。 .contents().filter() 似乎只选择了element 的直接子代,其中XPath 的descendant::text() 递归地查看element 的所有子代。附言api.jquery.com 为您工作吗?似乎对我不利。
    • 这应该是$(element).find('*').andSelf().contents()
    • @thg435 搞定了!在@Joseph 的编辑处,那个人现在失去了element 上下文。
    • @thg435 您应该将其发布为答案
    【解决方案2】:

    here 尝试我的解决方案。它甚至允许您在没有额外功能的情况下过滤文本节点本身,以及使用.end()

    【讨论】:

      猜你喜欢
      • 2013-09-17
      • 2012-07-24
      • 2019-01-24
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      • 2013-12-21
      • 2011-12-25
      • 2011-03-17
      相关资源
      最近更新 更多