0

jQueryでテキストノードを選択するにはどうすればよいですか? しかし、私の問題は、私は

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

必要なもののいくつかが の組み合わせとして表示される可能性があるため、またはそれが理にかなっており、各ノードの値と との組み合わせでそれをテストする必要があるためthis.nodeTypebeforeおよびafterノードとどのように組み合わせることができるかを理解しようとしています。前と次?this.nodeValue + beforethis.nodeValuethis.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 に答える