2013-03-15 3 views
1

У меня есть HTML дерево, как это:JQuery: получить текст между двумя элементами <br>

<pre id="code_block"> 
    This is line 1<br> 
    This is line 2<br> 
    This is line 3<br> 
    This is line 4<span id="marker"></span><br> 
    This is line 5<br> 
    This is line 6<br> 
    ... 
</pre> 

сейчас, мне нужно, чтобы получить текст линии, где интервал маркеров сопротивляется в ... я уже есть два элемента (ведущие < бр> и < SPAN>)

$('#marker'); 
$('#marker').prev('br'); 

, но как получить текст между этими?

Я уже пробовал несколько решений
, но проблема заключается в том, что текст между двумя элементами не является собственным элемент ...

идей?

+1

вы можете уточнить бит больше! что вы хотите увидеть в конечном результате? –

ответ

1

Вы можете использовать previousSibling свойство:

document.getElementById('marker').previousSibling; 

previousSibling возвращает объект, если вы хотите, чтобы получить текстовое содержимое этого, вы можете использовать textContent, nodeValue или wholeText недвижимость.

http://jsfiddle.net/udsZe/

1

Если вы хотите получить This is line 4, то вы можете сделать так:

var text = $('#marker').map(function(){ 
    return this.previousSibling.nodeValue; 
}); 

alert(text[0]); 

Demo: http://jsfiddle.net/Bg9PT/

+0

Почему вы используете метод 'map'? Когда есть только одно возвращаемое значение. – undefined

+0

Только ради получения более 1 раза, если необходимо в будущем. – Eli

+0

Благодаря вашему ответу я понял, что в моем случае мне нужно использовать this.nextSibling, а не $ this.nextSibling !! – user109764

Смежные вопросы