Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как получить inner text без тега label? (https://javascript.ru/forum/jquery/28028-kak-poluchit-inner-text-bez-tega-label.html)

kostepanych 04.05.2012 13:35

Как получить inner text без тега label?
 
Доброго время суток,

есть спаны типа:
<span class="value">
    <label>Label Text</label>
     Some Text
</span>


как наиболее оптимально достать отсюда только Some Text без текста в label?

$('span.value').each(function () {
//    $(this).text()     - возвращает   Label Text  Some Text, а нужен только Some Text
 });

$('span.value :not(label)') - тоже не получается...

тега label в спанах может и не быть, нужен универсальный вариант

vadim5june 04.05.2012 13:47

у span class="value"
одна из дочек будет текстовый нод с nodeValue some text

bot87 04.05.2012 13:50

alert(document.getElementsByTagName('span')[0].lastChild.nodeValue)
Хотя не уверен.Может проблемы через переносы строк....хз

tenshi 04.05.2012 14:19

в цикле проверять this.nodeName

kostepanych 04.05.2012 15:56

Текст в теге label без проблем можно достать ('span.value label').
Но неужели нет селекторов для текстового нода?

vadim5june 04.05.2012 16:13

bot87 написал-все работает-или нужно обязательно на jquery
alert(document.getElementsByTagName('span')[0].lastChild.nodeValue)
или по другому
alert(span.lastChild.nodeValue)
где span нужно найти

bes 04.05.2012 17:51

Цитата:

Сообщение от kostepanych
как наиболее оптимально достать отсюда только Some Text без текста в label?

Задача, конечно, имеет место быть, но теги для того и придумали, чтобы воздействовать на их содержимое и осуществлять над ним контроль. Может просто заключить дополнительный текст в некоторые подходящие по смыслу теги и не решать задачу вычленения просто текста из разнородного содержимого некоторого тега.

9xakep 04.05.2012 21:15

<span class="value">
    <label>Label Text</label>
     Some Text
</span>
<script>
var str = document.getElementsByClassName('value')[0].innerHTML
str = str.replace(/\n/,'').replace(/<label>.+<\/label>/,'')
alert(str)
</script>

tenshi 04.05.2012 22:24

Цитата:

Но неужели нет селекторов для текстового нода?
есть)

document.evaluate( " span[ contains( concat( ' ', @class, ' ' ), ' label ' ) ] / text() " )

kostepanych 07.05.2012 12:21

как-то все сильно наворочено получилось...

А если просто исключить теги <label> из чайлдов?

Пытаюсь сделать так:
$('span.value').each(function () {
   $(this).contents().not('label').text();

не выходит... Как правильно это реализовать?


Часовой пояс GMT +3, время: 03:35.