Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Jquery. Как обернуть голый текст в span. (https://javascript.ru/forum/misc/59692-jquery-kak-obernut-golyjj-tekst-v-span.html)

vuler 23.11.2015 00:07

Jquery. Как обернуть голый текст в span.
 
Добрый день.
Есть например html код
<div>
     сообщение <br>без тегов
    <p>Внутрений p</p>
   <span>Текст в спане</span>
    сообщение без тегов
</div>

Вообще дерево многоуровневое и большое.
Мне нужно обернуть все безтеговые элементы например в span.
по типу <span> сообщение <br>без тегов</span>.
Как это можно сделать попроще? .text() - берет весть текст элемента, с учетом вложений(не подходит).
Вариант тупого перебора у каждого элемента
div[0]['childNodes'][0].nodeName искать #text и сшивать потом в куски - мне кажется будет очень долгим.
Может есть метод попроще и побыстрее?
Заранее спасибо.

vuler 23.11.2015 00:30

Ладно вопрос закрыт :)
Вроде подошел метод
div.contents().filter(function() {
            return this.nodeType === 3 && $.trim(this.nodeValue) !== '';
        })
        .wrap('<span/>');

рони 23.11.2015 00:57

vuler,
как же
Цитата:

Сообщение от vuler
<span> сообщение <br>без тегов</span>.

? или лишние span не помеха?

vuler 23.11.2015 01:02

Вообще согласен, что лишнего много будет, но это Html редактор, итоговая страница будет без спанов. они просто удалятся.
Функция применро такая
function wrap_all_text(elem){
	elem.children().each(function(){
		wrap_all_text($(this))
	})
	elem.contents().filter(function() {
            return this.nodeType === 3 && $.trim(this.nodeValue) !== '';
        })
        .wrap('<span>');
}

Единственное, что он пока спаном оборачивает и теги, где json данные хранятся, это сейчас буду править :)


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