2012-06-05 86 views
0

我發現How do I select text nodes with jQuery?但我的問題是,雖然我可以去喜歡使用jquery查找文本節點?

$(elem) 
    .contents() 
    .filter(function() { 
    return this.nodeType == Node.TEXT_NODE; 
    }).each(function() { 
    this.nodeValue = //stuff 
    }); 

我試圖找出我怎麼能與beforeafter節點結合this.nodeType因爲有些東西我需要可以表現爲this.nodeValue + before,this.nodeValuethis.nodeValue + after的組合是否合理,我需要測試每個節點的值以及它與前一個和下一個的結合嗎?

+0

發佈一個示例標記代碼,瞭解您如何擁有它以及期望的結果,解釋您正在嘗試執行的操作。 –

回答

0

如果我理解正確,當您點擊文本節點時,您想要獲得prev和接下來的node。見下文,

var elContents = $('#test').contents(); 
elContents.each(function(idx, el) { 
    if (el.nodeType == 3) { 
     if (idx == 0) { 
      prev = null; 
      next = elContents.get(idx + 1); 
     } else if (idx == elContents.length - 1) { 
      prev = elContents.get(idx - 1); 
      next = null; 
     } else { 
      next = elContents.get(idx + 1); 
      prev = elContents.get(idx - 1); 
     } 

     //below is demo code 
     $('#result').append ("<b>Prev: </b>" + $(prev).text() + " <b>Cur: </b>" + $(el).text() + "<b> Next: </b>" + $(next).text() + '<br />'); 
    } 
}); 

DEMO:http://jsfiddle.net/SFmRR/

注:在演示中,裏面的div元素沒有任何額外的空間/換行符,因爲當你遍歷contents()它包括線作爲textNode打破和空間。

+0

@Andy它是相同的,除了你通過jQuery而不是手動迭代器傳遞給你'index'和'element'。 –