2010-08-12 53 views
4

我想返回表格單元格的節點值。然而,text()方法沿着整個DOM樹進行,並返回一個所有嵌套節點的字符串(表格單元格可能包含文本和html)。一旦我提取了節點的字符串,我想修改它並將其寫回節點。修改後的文本由文本和html組成。返回節點文本(非遞歸)

是否有任何jQuery的方法(或可能是Javascript),可用於獲取文本(不降序到孩子)和另一個函數,我可以用它來回寫文本+ html(純文本()和html ()在這種情況下不起作用,因爲它們會覆蓋子節點)?

乾杯, 最大

+1

:可以先和腳本運行後舉一些例子說明標記? – prodigitalson 2010-08-12 03:58:12

回答

4

要想從子文本節點的文本,你可以這樣做:

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

我並不確切地知道你想要用文字做什麼,但如果你想在處理它時用新的文本/ 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/

+0

工程很棒。確切地說,我正在尋找...將它作爲jQuery的一部分很好。 – Max 2010-08-12 05:17:46