Использование .text () для извлечения только текста, не вложенного в дочерние теги

Если у меня есть HTML, как это:

<li id="listItem">
    This is some text
    <span id="firstSpan">First span text</span>
    <span id="secondSpan">Second span text</span>
</li>

Я пытаюсь использовать .text () , чтобы получить только строку «Это какой-то текст», но если бы я был сказать $ ('# list-item'). text () , я получаю «Это некоторый текст textFirst span textSecond span text».

Есть ли способ получить (и, возможно, удалить, через что-то вроде .text ("") ) только свободный текст внутри тега, а не текст внутри его дочерних тегов?

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

362
задан MegaMatt 13 October 2017 в 08:20
поделиться

4 ответа

Это должно быть что-то, приспособленное к потребностям, которые зависят от структуры, которую вы представили. Для примера, который вы привели, подойдет следующее:

$(document).ready(function(){
     var $tmp = $('#listItem').children().remove();
     $('#listItem').text('').append($tmp);
});

Демо: http://jquery.nodnod.net/cases/2385/run

Но это зависит от того, что разметка будет похожа на ту, что вы разместили.

6
ответ дан 23 November 2019 в 00:11
поделиться

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

document.getElementById("listItem").childNodes[0];

Вам нужно будет обрезать его, но он даст вам то, что вы хотите, в одной простой строке.

РЕДАКТИРОВАТЬ

Вышеупомянутое приведет к текстовому узлу . Чтобы получить фактический текст, используйте это:

document.getElementById("listItem").childNodes[0].nodeValue;
140
ответ дан 23 November 2019 в 00:11
поделиться

Это не проверено, но я думаю, вы можете попробовать что-то вроде этого:

 $('#listItem').not('span').text();

http://api.jquery.com/not/

-4
ответ дан 23 November 2019 в 00:11
поделиться

просто поместите его в

или и возьмите этот $ ('# listItem font'). Text ()

Первое, что пришло в голову

<li id="listItem">
    <font>This is some text</font>
    <span id="firstSpan">First span text</span>
    <span id="secondSpan">Second span text</span>
</li>
-1
ответ дан 23 November 2019 в 00:11
поделиться
Другие вопросы по тегам:

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