我找到了How do I select text nodes with jQuery?,但我的问题是虽然我可以像
一样$(elem)
.contents()
.filter(function() {
return this.nodeType == Node.TEXT_NODE;
}).each(function() {
this.nodeValue = //stuff
});
我想弄清楚如何将this.nodeType
与before
和after
节点结合起来,因为我需要的一些内容可以显示为{{1}的组合},this.nodeValue + before
或this.nodeValue
如果有意义,我需要测试EACH节点值以及它与前一个和下一个一起测试吗?
答案 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。