jQuery / Sizzle只选择Text节点(或者,如何将XPath表达式转换为Sizzle)

时间:2012-05-05 23:14:23

标签: javascript jquery xpath sizzle

我有以下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(10号左右?)。

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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