0

我发现如何使用 jQuery 选择文本节点?但我的问题是,虽然我可以去

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

我试图弄清楚如何this.nodeTypebeforeandafter节点结合,因为我需要的一些东西this.nodeValue + before可以this.nodeValue显示this.nodeValue + after为上一个和下一个?

4

1 回答 1

0

如果我理解正确,您想在点击文本节点时获得prevand next 。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 />');
    }
});

演示:http: //jsfiddle.net/SFmRR/

注意:在演示中,div 内的元素没有任何额外的空格/换行符,因为当您迭代时,contents()它包括换行符和空格作为 textNode。

于 2012-06-05T17:55:06.310 回答