我正在寻找一个jQuery解决方案
<pre><marker id="markerStart"></marker>
aaaaa
<span style='font-family:monospace;background-color:#a0a0a0;'>bbb</span>bb
cc<marker id="markerEnd"></marker>ccc
</pre>
如何在<marker>
代码之间获取文字?应该是以下结果:
aaaaabbbbbcc
示例2(SPAN标记内的markerEnd):
<pre><marker id="markerStart"></marker>
aaaaa
<span style='font-family:monospace;background-color:#a0a0a0;'>b<marker id="markerEnd"></marker>bb</span>bb
ccccc
</pre>
预期结果:aaaaab
感谢。
答案 0 :(得分:3)
您可以像这样获取两个节点之间的所有元素:
$('marker:first').nextUntil('marker').text()
但是,由于您需要包含文本节点,因此需要编写
var contents = $('pre').contents(),
start = contents.filter('marker:first'),
end = start.nextAll('marker:first'),
startIndex = contents.index(start),
endIndex = contents.index(end);
alert(contents.filter(function(i) {
return i > startIndex && i < endIndex;
}).text());
答案 1 :(得分:2)
你走了:
function textBetween(id1, id2) {
var node = document.getElementById(id1).nextSibling,
text = '';
while ( node && node.id !== id2 ) {
text += node.textContent.trim();
node = node.nextSibling;
}
return text;
}
调用此方法获取文字:
textBetween('markerStart', 'markerEnd')