返回节点文本(非递归)

时间:2010-08-12 03:55:11

标签: javascript jquery html dom

我想返回表格单元格的节点值。然而,方法text()沿着整个DOM树向下并返回所有嵌套节点的字符串(表格单元格可能包含text和html)。一旦我提取了节点的字符串,我就想修改它并将其写回节点。修改后的文本由文本和html组成。

是否有任何jquery方法(或者可能是Javascript)可用于获取文本(不会降级到子级)和另一个我可以用来写回文本+ html(纯文本()和html的函数( )在这种情况下不起作用,因为它们会覆盖子节点)?

干杯, 最大

1 个答案:

答案 0 :(得分:4)

要从子文本节点获取文本,您可以这样做:

var text = $('selector').contents().map(function() {
        // If it is a textNode, return its nodeValue
    if(this.nodeType == 3) return this.nodeValue;
}).get().join('');​​​​​​

我不确切地知道您要对文本做什么,但是如果您想要处理它并将其替换为新的text / html,您应该能够执行.each()而不是并使用.replaceWith()

$('selector').contents().each(function() {
    if(this.nodeType == 3) {
       // do something with the text
       $(this).replaceWith('new processed value');
    }
});​​​​​​

以下是一个例子: http://jsfiddle.net/ZNjCW/