@artinnok
бекенд-программист

Как достать текст из контейнера, но не включаю детей?

Такая разметка:
<p>
    <s>2</s>
    1
</p>


Надо вытащить 1 - какие способы через jQuery, JavaScript?
  • Вопрос задан
  • 225 просмотров
Решения вопроса 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
На чистом js:
var p = document.getElementsByTagName('p')[0],
    text = '',
    child,
    index;

for (index = 0; index < p.childNodes.length; index++) {
    child = p.childNodes[index];
    
    if (child.nodeType == Node.TEXT_NODE)
    {     
        text += child.nodeValue;
    }
}

console.log(text);

Если необходимо, добавьте проверку на пустоту узла по вкусу. В приведенном коде два текстовых узла, например, один из которых состоит только из перевода каретки.

UPD: На самом деле, на пустоту можно не проверять и использовать метод trim(). Если нужна поддержка IE8-, есть полифил. Всё зависит от конкретной задачи и разметки.

UPD2: Разумеется, код на jQuery в 100500 раз медленнее, но реальная разница в производительности будет заметна только на гигантских объемах или очень-очень-очень медленных машинах, поэтому если в проекте уже используется jQuery, есть смысл использовать вариант, который предложил Денис, как самый читабельный.
Ответ написан
Комментировать
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
<script>
var txt = $('p').clone().children().remove().end().text();
console.log(txt); // 1
</script>
Ответ написан
Комментировать
@Wol_fi
php, js, mysql, highload
jQuery('p').each(function(){
   var nodeClone = $(this).clone();
   nodeClone.find('*').remove();
   var nodeText = nodeClone.text();
   console.log(nodeText);
});

Вот так например. За правильность метода не ручаюсь.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы