使用jquery查找文本节点?

时间:2012-06-05 17:01:01

标签: jquery nodes

我找到了How do I select text nodes with jQuery?,但我的问题是虽然我可以像

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

我想弄清楚如何将this.nodeTypebeforeafter节点结合起来,因为我需要的一些内容可以显示为{{1}的组合},this.nodeValue + beforethis.nodeValue如果有意义,我需要测试EACH节点值以及它与前一个和下一个一起测试吗?

1 个答案:

答案 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。