如何在两个封闭标签之间获取文本

时间:2011-04-27 16:16:41

标签: javascript jquery

我正在寻找一个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

感谢。

2 个答案:

答案 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());

http://jsfiddle.net/SLaks/2jEps/

答案 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')

现场演示: http://jsfiddle.net/simevidas/yxVxy/4/